home *** CD-ROM | disk | FTP | other *** search
/ System Booster / System Booster.iso / Commodities / Angie / Angie.dok < prev    next >
Text File  |  1996-09-26  |  82KB  |  1,821 lines

  1.  
  2.               ----------------------------------------------
  3.               Angie 3.6 (3.12.93) © Franz Schwarz - Giftware
  4.               ----------------------------------------------
  5.  
  6.                ANother Great Intuition Enhancer - Commodity
  7.  
  8.                          © 1993 & geschrieben von
  9.                                Franz Schwarz
  10.                     Mühlenstraße 2, D-78591 Durchhausen
  11.                     Uucp: Franz_Schwarz@mil.ka.sub.org
  12.                         Fido Classic: 2:2476/506.18
  13.              Konto 951.207 bei KSK Trossingen, BLZ 643 500 70
  14.  
  15.                GUI erstellt mit Hilfe von GadToolsBox 37.300
  16.  
  17.          Angie ist GIFTWARE. Das heißt, Sie sollten dem Autor ein
  18.         hübsches Geschenk, D-Märker oder ZUMINDEST eine originelle
  19.        Postkarte zukommen lassen, falls Sie das Programm verwenden.
  20.  
  21.     Als besonders hübsches Geschenk betrachtet der Autor u.a. bespielte
  22.    aktuelle Musik-MCs/CDs/LPs - als besonders mieses Geschenk allerdings
  23.      solche mit den unsäglichen Machwerken vom Nabtal-Duo, Heino, den
  24.        K*sselr**er Spatzen u.ä Subjekten, die mit Ihrem sogenannten
  25.       'volkstümlichen'  (richtig: volksverdummenden) Harmoniegedudel
  26.      kollektiven Hochverrat an der deutschsprachigen Gegenwartskultur
  27.                                  begehen.
  28.  
  29.  
  30.                      Außerdem ist Angie TOLERANCEWARE.
  31.          Das heißt, es ist Personen, die Gewalttaten gegen andere
  32.      Menschen wegen deren Herkunft, Hautfarbe, sexueller Orientierung,
  33.          Geschlecht, Religion, oder Behinderung unterstützen oder
  34.        diese billigen, ausdrücklich und strengstens verboten, dieses
  35.    Softwarepaket zu verwenden oder irgendeinen Nutzen daraus zu ziehen.
  36.  
  37.  
  38.  
  39.             Vorbemerkungen zur deutschsprachigen Dokumentation
  40.             --------------------------------------------------
  41.  
  42. Hallo, Freunde der deutschen Zunge!;-)
  43.  
  44. Ab Angie 3.2 finden Sie jetzt hier eine Nahezu-1:1-Übersetzung der
  45. englischen Dokumentation vor - das einzige Kapitel, das sich weitherhin
  46. lediglich in der englischsprachigen Dokumentation finden läßt, ist das
  47. Kapitel über programmiertechnische Details von Angie (für Programmierer ist
  48. aber Englisch ohnehin die lingua franca;-)).
  49.  
  50.  
  51. Zunächst folgt ein kurzer Überblick über die Funktionen von Angie (im
  52. angelsächsichen Jargon auch 'Features' genannt), sowie daran anschließend
  53. eine bunte Mischung aus Änderungen in neueren Versionen von Angie und
  54. prinzipiell wichtigen Informationen, die nicht gerade offensichtlich sind.
  55. Nach diesem kleinen Vorgeschmack kommt dann endlich die ausführliche
  56. Dokumentation.
  57.  
  58.  
  59. Angie sollte übrigens auch weitestgehend selbsterklärend sein, da es
  60. generell Commodore's Benutzeröberflächengestaltungsrichtlinen (so schön
  61. kann Deutsch sein;-)) folgt.
  62.  
  63.  
  64.                             INHALTSVERZEICHNIS
  65.                             ------------------
  66.  
  67.                                   PROLOG
  68.  
  69.                             KONZEPTE VON ANGIE
  70.  
  71.                   WAS JEDER ANGIE-BENUTZER WISSEN SOLLTE
  72.  
  73.            DIE ARGUMENTE & DIE INTERAKTIVE BENUTZERSCHNITTSTELLE
  74.  
  75.                 DIE VERSCHIEDENEN ANGIE-INTUITION-AKTIONEN
  76.  
  77.                        DIE SYNTAX DER ANGIESEQUENZEN
  78.                        
  79.                           DIE AREXX-SCHNITTSTELLE
  80.  
  81.                          WIE MAN HOTKEYS DEFINIERT
  82.  
  83.               TUTORIUM / DIE BEIGEFÜGTE HOTKEY-KONFIGURATION
  84.  
  85.                           DIE EVOLUTION VON ANGIE
  86.  
  87.                                 RECHTLICHES
  88.  
  89.                                   EPILOG
  90.  
  91.  
  92.  
  93.  
  94.                                   PROLOG
  95.                                   ------
  96.  
  97.                              Am Anfang war...
  98.  
  99. ...  Angie nur ein hübscher Name, dann kamen die Rolling Stones und machten
  100. daraus eine Rock-Legende.  Schließlich kam das Angie-Commodity über alle
  101. Amigas und verhieß ihnen ewige Intuition und erfüllte so die lange
  102. prophezeite Dreieinigkeit in Angie, dem Namen, dem Song und dem Commodity.
  103.  
  104.                          Angie ist ein Akronym für
  105.  
  106.                     ANother  Great  Intuition  Enhancer
  107.  
  108.  
  109. Angie ist allen Amiga-Benutzern gewidmet, die es leid sind, die vielen
  110. Utilities, die teilweise vor üblen Programmier-Hacks strotzen und sich
  111. einen Sch*** um dokumentierte Zugriffsprotokolle scheren, zu benutzen.
  112. Angie wurde mit dem vorrangigen Ziel entwickelt, illegale Speicherzugriffe
  113. und ungesicherte oder undokumentierte Zugriffe auf globale Systemdaten in
  114. allen Fällen und mit allen Mitteln zu vermeiden.
  115.  
  116.  
  117.  
  118.  
  119.  
  120.                             KONZEPTE VON ANGIE
  121.                             ------------------
  122.  
  123. In der Tat veredelt Angie die einzigartige grafische Benutzeroberfläche des
  124. Amiga -Intuition- auf vielerlei Weise.  Aber was noch besser ist:  Angie
  125. ist durch und durch konfigurierbar durch den Benutzer - d.h.  SIE.  Sie
  126. haben also die Möglichkeit ihr eigenes, ganz persönliches Intuition Schritt
  127. für Schritt zu verwirklichen, das ganz genau ihren eigenen Vorlieben
  128. entspricht und gewissermaßen ihre eigene Individualität ausdrückt und ihre
  129. Perönlichkeit definiert (Wer hat das jetzt genau verstanden;-)).  Angie
  130. erreicht das, indem es dem Benutzer die komplette Kontrolle über nahezu
  131. alle seinen bedeutsamen Größen und Eigenschaften erlaubt -
  132. selbstverständlich über eine graphische Benutzerschnittstelle.
  133.  
  134. Unter Angies Funktionen sind 
  135.  
  136. A) automatisches Fenster-Jagen (d.h. Nachvornebringen des
  137. aktuellen Schirms und des aktuellen Fensters, Anpassen des
  138. angezeigten Schirmausschnitts bei übergroßen AutoScroll-Schirmen
  139. ='HuntWindow'), 
  140.  
  141. B) Reaktivieren des zuletzt aktiven Fensters / des zuletzt
  142. aktiven Fensters eines anderen Schirms, Merken aller zuletzt aktiven
  143. Fenster aller Schirme (TWA), 
  144.  
  145. C) und ein bisher einmaliges 'Tastendruck-Schirmaktivierungs'-
  146. Feature, das das zuletzt aktive Fenster (oder das Fenster unter dem
  147. Mauszeiger, falls Angie kein Fenster des Schirms in Erinnerung
  148. hat, oder, falls sich auch kein Fenster unter dem Mauszeiger be-
  149. findet, das vorderste Fenster des Schirms) des Schirms über dem sich 
  150. der Mauszeiger befindet (oder anstelle dessen des aktiven Schirms, falls
  151. kein aktives Fenster existiert, und der aktive Schirm (zumindest teilweise)
  152. sichtbar ist, oder ersatzweise eines anderen (zumindest teilweise)
  153. sichtbaren, so weit vorne wie möglich angeordneten Schirms, auf dem Fenster
  154. geöffnet sind) aktiviert, *dann, und nur dann*, wenn sich das aktuelle
  155. Fenster auf einem Schirm befindet, der komplett verdeckt ist, oder
  156. überhaupt kein aktives Fenster existiert, und wenn ein Tastendruck-Eingabe-
  157. Ereignis an Angies Tastendruck-Schnüffler gemeldet wird (was normalerweise
  158. bei jedem Tastendruck geschieht, es sei denn Sie haben die entsprechende
  159. Taste in Angie durch eine (Pseudo-)Hotkey-Definition mit dem '~SchrmAktv'-
  160. Attribut speziell davon ausgeschlossen, eine derartige 'Tastendruck-Schirm-
  161. aktivierung'-Aktion auszulösen).  Anm.  des Autors:  Wenn Sie das nicht auf
  162. Anhieb verstanden haben sollten:  machen Sie sich nichts daraus - aber
  163. genau so lautet eben die genaue Beschreibung des Tastendruck-Schirm-
  164. aktivierungs-Features.  Diese Funktion ist wirklich so wie sie
  165. implementiert wurde äußerst durchdacht, und ich möchte sie nie wieder
  166. missen - Ihnen wird es genau so gehen.
  167.  
  168. D) Angie bietet schließlich auch eine bisher einmalige automatische 
  169. Fenstertask-Priorität-Erhöhung:  Diese Funktion ist in der
  170. Multitasking-Umgebung eines Amiga, wo oft mehrere Applikationen
  171. gleichzeitig laufen, nahezu unentbehrlich:  Sie erhöht immer die Priorität
  172. des Tasks, der die Eingabe-Ereignisse des aktiven Fensters verarbeitet, und
  173. setzt sobald das Fenster inaktiv wird die Taskpriorität wieder auf
  174. den ursprünglichen Wert zurück, falls niemand anderes zwischenzeitlich die
  175. Taskpriorität verändert hat.  Durch diese Funktion wirkt die grafische
  176. Benutzeroberfläche des Amigas niemals träge, weil die Benutzereingaben
  177. immer mit Vorrang vor anderen Applikationen bearbeitet werden.  Falls der
  178. Benutzer jedoch keine Eingaben macht, hat das für die Performance der
  179. übrigen Applikationen für gewöhnlich keinen Einfluß:  sie erhalten dann die
  180. gesamte Prozessorzeit, da der Task, der die Eingaben aus dem aktiven
  181. Fenster bearbeitet gemeinhin dann lediglich auf die nächste Benutzereingabe
  182. wartet (Editor, etc...) 
  183.  
  184. E) Das herausragende an Angie ist aber, daß man beliebig viele Hotkeys mit
  185. beliebigen 'AngieSequenzen', die aus sechzig Intuition-Funktionen, aus
  186. beliebigen Dos-Kommandosequenzen, und beliebigen Eingabe-Ereignis-Sequenzen
  187. mit beliebig wählbarer Verzögerung zwischen der Ausführung der einzelnen
  188. Elemente zusammengesetzt sein können, belegen kann.
  189.  
  190. F) Ab Version 3.5 kann Angie auch via AREXX-Port mit AngieSequenzen
  191. gefüttert werden, die es dann ausführt.
  192.  
  193.  
  194.  
  195.                   WAS JEDER ANGIE-BENUTZER WISSEN SOLLTE
  196.                   --------------------------------------
  197.  
  198.  
  199. JEDER sollte wissen, daß Angie GIFTWARE ist.  Sie sollten deshalb nicht
  200. zögern, dem Autor ein hübsches Geschenk, D-Märker (auch Fränkli und
  201. Schillinge willkommen;-)), oder ZUMINDEST eine Postkarte zu schicken, falls
  202. Sie Angie verwenden.
  203.  
  204.  
  205. AB VERSION 3.6 (die endgültige für 1993!) kann innerhalb von
  206. dos_kommando_sequenzen das '¶'-Zeichen (<alt p>) als Ersatz für das
  207. Zeilentrenner-Zeichen (Linefeed) verwendet werden.
  208.  
  209. AB VERSION 3.6 lädt Angie beim Shell-Start automatisch die im
  210. 'PROGDIR:Angie'-Piktogramm gespeicherte Konfiguration, falls keine
  211. Argumente angegeben werden.
  212.  
  213. AB VERSION 3.5 besitzt Angie einen AREXX-PORT namens 'ANGIEREXX', an den
  214. Sie beliebige AngieSequenzen senden können, die Angie dann ausführt.
  215.  
  216. AB VERSION 3.3 wurde die Hotkey-Liste-Schmöker-Funktion erheblich optimiert
  217. - dies ist besonders für die 68000/68010- Benutzer von Interesse, da diese
  218. Funktion sich auf ihren Rechnern in früheren Angie-Versionen als ziemlich
  219. träge herausgestellt hatte.  Angies interaktive grafische Benutzer-
  220. oberfläche arbeitet jetzt hervorragend selbst mit dem verschrobensten
  221. Zeichensatz mit proporionaler Zeichenweite zusammen, desweiteren wird jetzt
  222. das 'Nachziehen' ('Backlogging') beim Ausführen von AngieSequenzen
  223. vermieden, und Angie reagiert jetzt auf Eingaben in Angies
  224. Benutzerschnittstellen-Fenster selbst in Extremsituationen unverzüglich.
  225.  
  226. AB VERSION 3.1 werden mit Angie drei kleine Utilties mitvertrieben, die
  227. sich exzellent zur Benutzung innerhalb von AngieSequenzen eignen:
  228. SetActiveWin, MagicPubName & RawInsert - allesamt vom Autor von Angie
  229. geschrieben.  Für nähere Informationen über die Utilties, schauen Sie bitte
  230. in die entsprechenden DokumentationsDateien.  INSBESONDERE SOLLTEN SIE
  231. SICH DIE BEISPIEL-ANGIESEQUENZEN IN DER DOKUMENTATION ZU SETACTIVEWIN
  232. ÄUßERST GENAU ANSCHAUEN.
  233.  
  234. AB VERSION 3.1 wird für SyncDosSequenzen KEINE Konsole mehr geöffnet, und
  235. SyncDosSequenzen werden nicht mit der Priorität ausgeführt, mit der Angie
  236. gestartet wurde, sondern mit derjenigen, mit der Angie läuft (normalerweise
  237. 5).
  238.  
  239.  
  240.                      NEUE EIGENSCHAFTEN VON ANGIE 3.0:
  241.  
  242. Angie 3.0 hebt die meisten Beschränkungen auf, die die commodities.library
  243. V37-V40 im Bezug auf das Übersetzen von Commodity-Eingabeereignis-
  244. Beschreibungen in InputXpressions setzt.  So können innerhalb von Angie nun
  245. auch die armen Workbench 2.04 - Benutzer die rawmouse-Tastencodes
  246. 'MOUSE_LEFTPRESS', 'MOUSE_MIDDLEPRESS' & 'MOUSE_RIGHTPRESS' verwenden, die
  247. sonst erst ab Workbench 2.1 unterstützt werden.  Bis zumindest
  248. einschließlich Workbench 3.1 kennt die commodities.library leider keine
  249. Tastencodes für die Tastatur-Qualifier-Tasten wie Shift, Alt, Control, etc.
  250. Innerhalb Angie können Sie jedoch die rawkey-Tastencodes 'CONTROL_PRESS',
  251. 'CAPS_PRESS', 'LSHIFT_PRESS', 'RSHIFT_PRESS', 'LALT_PRESS', 'RALT_PRESS',
  252. 'LAMIGA_PRESS' & 'RAMIGA_PRESS' verwenden.  Die notwendigen Erweiterungen,
  253. um diese zusätzlichen Keycodes übersetzen zu können, wurden dabei so
  254. gestaltet, daß diese Erweiterungen mit jeder zukünftigen Version der
  255. commodities.library zusammenarbeiten.
  256. Einige Commodity-Eingabeereignis-Beschreibungen, die innerhalb von Angie
  257. mit jeder Version der commodities.library richtig übersetzt werden:
  258. 'rawmouse leftbutton mouse_leftpress'
  259. 'rawmouse -capslock upstroke mouse_middlepress'
  260. 'lshift -capslock -control -alt lshift_press'
  261. '-capslock -upstroke caps_press'
  262. Es bleibt zu bemerken, daß trotz dieser Angie-internen Verbesserungen die
  263. commodities.library V37 weiterhin auch innerhalb von Angie unfähig ist, die
  264. 'leftbutton'-, 'midbutton'- & 'rbutton'-Qualifier korrekt anzuwenden - die
  265. commodities.library V37 ignoriert diese Qualifier also weiterhin.
  266.  
  267.  
  268.  
  269. DIE WICHTIGSTE ÄNDERUNG AN ANGIE 3.0 im Vergleich zu früheren Versionen
  270. BESTEHT JEDOCH DARIN, DAß DIE HOTKEYS JETZT MIT 'ANGIESEQUENZEN' BELEGT
  271. WERDEN.  Eine 'AngieSequenz' besteht aus einer BELIEBIGEN ZAHL von Angies
  272. Intuition-Funktionen, beliebigen synchron oder asynchron auszuführenden
  273. Dos-Kommando-Sequenzen, Ascii-Text-Sequenzen und Commodities-Eingabe-
  274. ereignis-Beschreibungen, mit beliebiger Verzögerung zwischen jedem
  275. einzelnen Element.  Als Konsequenz daraus schreibt Angie jetzt seine
  276. Hotkey-Tooltypes in einem anderen Format, aber Angie KANN WEITERHIN ALTE
  277. KONFIGURATIONEN EINLESEN.
  278.  
  279. Eine weitere neue Eigenschaft von Angie 3.0 ist das '~Filtern'-Attribut,
  280. das das alte 'NachVorn'-Attribut ersetzt, welches nun für jedes einzelne
  281. Element einer AngieSequenz einzeln spezifiziert werden kann.  Das
  282. '~Filtern'-Attribut hat die Auswirkung, daß das jeweilige Eingabeereignis,
  283. das die Ausführung einer AngieSequenz auslöst, im Eingabestrom bleibt und
  284. nicht wie gewohnt daraus entfernt wird.
  285.  
  286. Angie 3.0 hat (schon wieder) einen neuen (standardmäßig eingestellten)
  287. Auto-Fenster-Jagen-Modus:  'CapsLock1'. Der von Angie 2.0 her bekannte
  288. 'CapsLock'-Modus ist als Option immer noch vorhanden - er trägt jetzt den
  289. Namen 'CapsLock2'.
  290.  
  291. In den CapsLock*-Auto-Fenster-Jagen-Betriebsarten wird die CapsLock-Taste
  292. als Ein-/Aus-Schalter für das Auto-Fenster-Jagen zweckentfremdet.  Bei
  293. aktiver CapsLock2-Betriebsart werden außerdem alle CapsLock-Eingabe-
  294. ereignisse und auch der Capslock-Qualifier von Angie ausgefiltert und
  295. erreichen weder alle andere Commodity-Objekte (CxObjects) von Angie noch
  296. Commodities, die hinter Angie im Commodity-Netzwerk liegen.
  297.  
  298. BIS ANGIE 1.7 gab es bei eingeschalteter Tastendruck-Schirmaktivierung-
  299. Funktion unschöne Nebenwirkungen in Zusammenhang mit Hotkeys, die Schirme
  300. blättern, falls für diese Hotkeys, wenn sie in Angie definiert waren, das
  301. ~SchrmAkt-Attribut nicht gesetzt war oder wenn für Hotkeys, die außerhalb
  302. von Angie definiert waren, kein NoKeyActivate-Pseudo-Hotkey- Eintrag in
  303. Angie angelegt wurde.  Beachten Sie, daß dies AB ANGIE 2.0 nicht mehr der
  304. Fall ist, da Angie jetzt eine andere, komplexere (aber extrem kompatible)
  305. Vorgehensweise bei der Ausführung der Tastendruck-Schirmaktivierung-
  306. Funktion verwendet.  Bis ANGIE 3.2 war die Dokumentation zu diesem Punkt
  307. jedoch leider noch auf dem Stand von Angie 1.7
  308.  
  309.  
  310.                   Andere wichtige Informationen in Kürze
  311.  
  312.  
  313. Wann tritt eine Auto-Fenster-Jagen-Aktion ein???
  314.   Eine Auto-Fenster-Jagen-Aktion tritt nicht notwendigerweise gleich
  315.   dann ein, wenn eine Änderung festgestellt wird:  Falls der linke
  316.   Mausknopf und/oder sein Tastatur-Pendant (linke Alt + Amiga) gedrückt
  317.   sind, dann wird die Auto-Fenster-Jagen-Aktion solange zurückgestellt,
  318.   bis entweder der linke Mausknopf oder linke Alt + Amiga losgelassen
  319.   werden.  Weiterhin bewirkt ein Druck auf die rechte Maustaste oder
  320.   ein Gedrückthalten derselben, daß eine eventuell anstehende
  321.   Auto-Fenster-Jagen-Aktion nicht ausgeführt wird.  Falls einer der
  322.   CapsLock*-Auto-Fenster-Jagen-Modi aktiviert ist, gilt das gleiche
  323.   auch wenn die CapsLock-Taste aktiv ist (d.h sie leuchtet).
  324.  
  325.   
  326.  
  327. Es wird Ihnen geraten, das ~SchrmAktv-Attribut für all Ihre rawkey-Hotkeys
  328. zu setzen, die Schirme blättern und dabei nicht ein Fenster auf dem nach
  329. vorne gebrachten Schirm aktivieren oder die Fenster jagen bzw.
  330. reaktivieren.  Dies hält die entsprechenden rawkey-Eingabeereignisse davon
  331. ab, eine Tastendruck-Schirmaktivierung-Aktion auszulösen, die in diesen
  332. Fällen meist unerwünscht ist.
  333.  
  334. Da dies normalerweise auch für rawkey-Hotkeys, die außerhalb von Angie
  335. definiert sind und entsprechende Aktionen auslösen, gilt, können Sie auch
  336. solche 'fremden' Hotkeys davon ausschließen, eine Tastendruck-
  337. Schirmaktivierung-Aktion auszulösen, indem sie für diese Hotkeys in Angie
  338. NoKeyActivate-Pseudo-Hotkey-Einträge anlegen.  Diese NoKeyActivate-
  339. Pseudo-Hotkeys haben den einzigen Zweck, die entsprechenden Eingabe-
  340. ereignisse von der Auslösung von Tastendruck-Schirmaktivierung-Aktionenen
  341. auszuschliessen.
  342. Sie können z.B. das Standard-Intuition-Schirmblättern mit den lcommand m/n-
  343. Tasten davon ausschliessen:
  344.                 'lcommand -repeat -caps -alt -control m' &
  345.                 'lcommand -repeat -caps -alt -control n' &
  346.                           'lcommand lamiga_press'
  347.                (PSEUDO-Aktion aus dem Menü: 'NoKeyActivate')
  348.  
  349.  
  350.  
  351.  
  352. Die Text-Eingabe-Gadgets von Angie haben spezielle Edier-Eigenschaften:
  353. 'ESC' verläßt das Gadget, wobei die im Gadget gemachten Änderungen
  354. ignoriert werden, und innerhalb der 'Hotkeys edieren'- & 'Aktion'-Gadgets
  355. haben die Cursor Hoch/Runter-Tasten ein spezielle Belegung.
  356.  
  357. Außerhalb der Gadgets bewirkt ein Druck auf 'ESC', daß das Angie-Fenster
  358. geschlossen wird, während ein Druck auf die 'z'-Taste Angies Fenster
  359. ikonifiziert bzw.  die reguläre Größe wiederherstellt, und mit den
  360. Cursor-Hoch-/Runter-Tasten können Sie durch die Hotkey-Liste schmökern.
  361.  
  362.  
  363. Falls Sie Angie von der Shell aus starten, so müssen Sie alle Argumente,
  364. die einen Wert besitzen, in Anführungszeichen einschließen, also
  365. z.B. "CX_PRIORITY=127" anstelle von CX_PRIORITY=127 tippen.
  366.  
  367.  
  368.  
  369. Von Version 2.0 an besitzt Angie eine bessere, ausgefeiltere Unterstützung
  370. für die Situation, daß zwar ein aktiver Schirm existiert, aber kein aktives
  371. Fenster.  Drei der vielen Konsequenzen die sich daraus ergeben:
  372.  
  373. 1.  Die 'HuntWindow'-Hotkey-Aktion jagt den aktiven Schirm falls kein
  374. aktives Fenster existiert.
  375. 2.  Falls die Tastendruck-Schirmaktivierung an ist, und ein (zumindest
  376. teilweise) sichtbarer Schirm aktiv ist, und kein aktives Fenster existiert,
  377. so tritt eine Tastendruck-Schirmaktivierung-Aktion ein (wobei das bevorzugt
  378. aktivierte Fenster bei dieser Aktion das zuletzt auf dem aktiven Schirm
  379. aktive Fenster ist)
  380. 3.  Alle Hotkey-Aktionen, die auf Fenster basieren, lösen grundsätzlich
  381. (also auch bei deaktivierter Tastendruck-Schirmaktivierung-Funktion!) eine
  382. Tastendruck-Schirmaktivierung-Aktion aus, falls kein aktives Fenster
  383. existiert, wobei bei dieser Aktion das aktivierte Fenster gemäß den
  384. Attributen des auslösenden Hotkeys möglicherweise nach vorne gebracht /
  385. gejagt wird.
  386.  
  387.  
  388.  
  389.  
  390.  
  391.            DIE ARGUMENTE & DIE INTERAKTIVE BENUTZERSCHNITTSTELLE
  392.            -----------------------------------------------------
  393.  
  394.  
  395. Die interaktive Benutzerschnittstelle hält sich an Commodore's
  396. Benutzeröberflächengestaltungsrichtlinen aus dem 'Amiga User Interface
  397. Style Guide'.  Ihre Benutzung sollte deshalb weitgehend selbsterklärend
  398. sein. Weiterhin werden die Standard-Commodities-Tooltype-Argumente
  399. 'CX_PRIORITY, CX_POPUP & CX_POPKEY unterstützt.
  400.  
  401.  
  402. Achtung:  Falls Sie Angie von der Shell aus starten, so müssen alle
  403. Argumente, die zugewiesene Werte enthalten, in Anführungszeichen
  404. eingeschlossen werden, also z.B. "CX_PRIORITY=127" anstelle von
  405. lediglich CX_PRIORITY=127
  406.  
  407. Angie lädt beim Start automatisch die im 'PROGDIR:Angie'-Piktogramm
  408. gespeicherte Konfiguration, falls Sie das 'DEFAULTPREFS'-Argument anführen
  409. oder falls Sie Angie von der Shell aus starten und überhaupt keine
  410. Argumente angeben.
  411.  
  412.  
  413. Sie können die im Piktogramm gespeicherte Konfiguration auch dann
  414. verwenden, wenn Sie Angie von der Shell aus starten, indem Sie
  415. entweder überhaupt keine Argumente übergeben oder das 'DEFAULTPREFS'-
  416. Argument anführen.
  417.  
  418.  
  419. Es folgt nun eine kurze Beschreibung der Elemente der interaktiven
  420. Benutzeroberfläche und von Angies Tooltype-Argumenten:
  421.  
  422. Das Auto-Fenster-Jagen - Gadget:
  423.     Mit diesem Gadget kontrollieren Sie die 'Auto-Fenster-Jagen'-Funktion
  424.     von Angie. Diese Funktion bestimmt, ob Angie automatisch Fenster jagen
  425.     soll oder nicht. Fenster-Jagen besteht darin, das aktive Fenster und
  426.     den aktiven Schirm nach vorne zu bringen und die Position des aktiven
  427.     Schirms so anzupassen, daß so viel wie möglich vom aktiven Fenster
  428.     sichtbar ist (also möglichst das gesamte Fenster). Wenn das Fenster
  429.     aber zu groß für die Anzeige ist, dann wird die Schirmposition so
  430.     verändert, daß die linke bzw. die obere Ecke des Fensters in der linken
  431.     bzw. der oberen Ecke der Anzeige dargestellt wird. Einzige Ausnahme
  432.     hiervon sind Backdrop-Fenster: Hier wird lediglich sichergestellt, daß
  433.     die gesamte Anzeige (d.h. der DisplayClip) vom Schirm ausgefüllt wird.
  434.     In anderen Worten: falls der Schirm heruntergezogen ist, wird er nach
  435.     oben zurückgerollt, ansonsten wird die Schirmposition nicht verändert.
  436.     Bei einer Fenster-Jagen-Aktion wird der betroffene Schirm immer nur so
  437.     wenig wie möglich gerollt.
  438.     Falls die Auto-Fenster-Jagen-Funktion aktiv ist, führt Angie immer dann
  439.     eine solche Fenster-Jagen-Aktion durch, wenn sich der aktive Schirm,
  440.     das aktive Fenster oder dessen Position oder Größe verandert haben.
  441.         
  442.     Eine Auto-Fenster-Jagen-Aktion tritt nicht notwendigerweise gleich
  443.     dann ein, wenn eine Änderung festgestellt wird:  Falls der linke
  444.     Mausknopf und/oder sein Tastatur-Pendant (linke Alt + Amiga) gedrückt
  445.     sind, dann wird die Auto-Fenster-Jagen-Aktion solange zurückgestellt,
  446.     bis entweder der linke Mausknopf oder linke Alt + Amiga losgelassen
  447.     werden.  Weiterhin bewirkt ein Druck auf die rechte Maustaste oder
  448.     ein Gedrückthalten derselben, daß eine eventuell anstehende
  449.     Auto-Fenster-Jagen-Aktion nicht ausgeführt wird.  Falls einer der
  450.     CapsLock*-Auto-Fenster-Jagen-Modi aktiviert ist, gilt das gleiche
  451.     auch wenn die CapsLock-Taste aktiv ist (d.h sie leuchtet).
  452.  
  453.     Dieses Gadget bietet vier verschiedene Einstellungen:
  454.     A: 'CapsLock1': In dieser Betriebsart ist Angies Auto-Fenster-Jagen-
  455.     Funktion aktiviert, es sei denn die CapsLock-Taste ist aktiv (d.h.
  456.     sie leuchtet). Die CapsLock-Taste wird also zweckentfremdet als ein
  457.     Auto-Fenster-Jagen-Ein-/Aus-Schalter. Dies ist die standardmäßgie
  458.     Betriebsart.
  459.     B: 'CapsLock2': wie CapsLock2, aber zusätzlich werden alle CapsLock-
  460.     Tastenddruck-Ereignisse und der CapsLock-Qualifier von Angie 
  461.     verschluckt, und erreichen weder Angies Hotkey-Objekte noch andere
  462.     Commodity-Broker, die hinter Angie im Commodities-Netzwerk eingebunden
  463.     sind.
  464.     C: 'Immer': In diesem Modus ist die Auto-Fenster-Jagen-Funktion stets
  465.     an - die CapsLock-Taste spielt dabei keine Rolle.
  466.     D: 'Aus': Diese Einstellung deaktiviert die Auto-Fenster-Jagen-Funktion.
  467.  
  468.     Das zu diesen Einstellungen gehörende Argument ist 'AUTOHUNTMODE' und
  469.     ist standardmäßig auf 'CAPSLOCK1' gesetzt.
  470.  
  471.  
  472. Die Ein-/Aus-Schalter-Gadgets:
  473.  
  474.   Jagen bei FensterVor-Hotkeys - falls aktiviert, führt Angie eine
  475.     automatische Fenster-Jagen-Aktion aus, wann immer es aufgrund einer
  476.     Aktion innerhalb einer AngieSequenz ein Fenster nach vorne bringt.
  477.     Das entsprechende Argument 'HUNTMODEWFRONT' ist standardmäßig
  478.     auf 'YES' gesetzt.
  479.     
  480.   Jagen: Std-Öff. Schirm setzen - bestimmt, ob bei jeder Fenster-Jagen-  
  481.     Aktion zusätzlich auch der aktive Schirm zum standardmäßigen 
  482.     öffentlichen Schirm gemacht werden soll. Falls der gejagte Schirm
  483.     dabei kein öffentlicher Schirm ist, wird der Workbench-Schirm zum
  484.     standardmäßigen öffentlichen Schirm.
  485.     Das Argument für diesen Schalter lautet 'HUNTMODESETDEFPUBSCR' und
  486.     ist standardmäßig auf 'NO' gesetzt.
  487.     
  488.   Tastendruck-Schirmaktivierung - (de)aktiviert eine nette, bisher
  489.     einmalige Funktion, die das zuletzt aktive Fenster (oder das
  490.     Fenster unter dem Mauszeiger, falls Angie kein Fenster des Schirms in
  491.     Erinnerung hat, oder, falls sich auch kein Fenster unter dem
  492.     Mauszeiger befindet, das vorderste Fenster des Schirms) des Schirms
  493.     über dem sich der Mauszeiger befindet (oder anstelle dessen des
  494.     aktiven Schirms, falls kein aktives Fenster existiert, und der aktive
  495.     Schirm (zumindest teilweise) sichtbar ist, oder ersatzweise eines
  496.     anderen (zumindest teilweise) sichtbaren, so weit vorne wie möglich
  497.     angeordneten Schirms, auf dem Fenster geöffnet sind) aktiviert, *dann,
  498.     und nur dann*, wenn sich das aktuelle Fenster auf einem Schirm
  499.     befindet, der komplett verdeckt ist, oder überhaupt kein aktives
  500.     Fenster existiert, und wenn ein Tastendruck-Eingabe-Ereignis an
  501.     Angies Tastendruck-Schnüffler gemeldet wird (was normalerweise bei
  502.     jedem Tastendruck geschieht, es sei denn Sie haben die entsprechende
  503.     Taste in Angie durch eine (Pseudo-)Hotkey-Definition mit dem
  504.     '~SchrmAktv'- Attribut speziell davon ausgeschlossen, eine derartige
  505.     'Tastendruck-Schirmaktivierung'-Aktion auszulösen).
  506.     'KEYACTIVATE' ist das zugehörige Argument und ist standardmäßig auf
  507.     'YES' gesetzt.
  508.   
  509.   Fenstertask-Priorität erhöhen - Schaltet die gleichnamige, in der
  510.     Multitasking-Umgebung eines Amiga, wo oft mehrere Applikationen
  511.     gleichzeitig laufen, nahezu unentbehrliche Funktion ein bzw.  aus:
  512.     Diese Funktion erhöht immer die Priorität des Tasks, der die
  513.     Eingabe-Ereignisse des aktiven Fensters verarbeitet, und setzt sobald
  514.     das Fenster inaktiv wird die Taskpriorität wieder auf den
  515.     ursprünglichen Wert zurück, falls niemand anderes zwischenzeitlich die
  516.     Taskpriorität verändert hat.  Durch diese Funktion wirkt die grafische
  517.     Benutzeroberfläche des Amigas niemals träge, weil die Benutzereingaben
  518.     immer mit Vorrang vor anderen Applikationen bearbeitet werden.  Falls
  519.     der Benutzer jedoch keine Eingaben macht, hat das für die Performance
  520.     der übrigen Applikationen für gewöhnlich keinen Einfluß:  sie erhalten
  521.     dann die gesamte Prozessorzeit, da der Task, der die Eingaben aus dem
  522.     aktiven Fenster bearbeitet gemeinhin dann lediglich auf die nächste
  523.     Benutzereingabe wartet (Editor, etc...)
  524.     Das zugehörige 'RAISEWINTASKPRI'-Arguemnt ist standardmäßig auf 'YES'
  525.     gesetzt.
  526.  
  527.   Backdrop-Fenster mitblättern - bestimmt, ob Backdrop-Fenster
  528.     mitgeblättert werden sollen, wenn in AngieSequenzen Fenster-Blätter-
  529.     Aktionen ausgeführt werden.
  530.     Das zugehörige Argument 'SHUFFLEBACKDROP' ist standardmäßig auf
  531.     'NO' gesetzt.
  532.  
  533.   GUI-Fenster beim Start öffnen - falls Sie wollen, daß Angies interaktive
  534.     Benutzeroberfläche beim Starten geöffnet wird, setzen Sie diesen
  535.     Schalter, andernfalls deaktivieren Sie ihn.
  536.     Das entsprechende Argument 'CX_POPUP' ist standardmäßig auf 'YES'
  537.     gesetzt.
  538.     
  539.  
  540. Die Schieberegler haben folgende Bedeutung:
  541.  
  542.   Stabilisier-Spanne - der Schnüffeltask erwartet, daß der aktive Schirm,
  543.     das aktive Fenster, dessen Größe und Position die hier in Millisekunden
  544.     angegebene Zeit unverändert bleiben, bevor er dem Hauptprogramm eine
  545.     Änderung derselben mitteilt. Der Wertebereich dieses Reglers ist
  546.     -1..1000, wobei -1 ein spezieller Wert ist, der bedeutet, daß der
  547.     Schnüffeltask, sobald er eine Änderung entdeckt, dies dem Haupt-
  548.     programm sofort mitteilt. Alle positiven Werte, einschließlich 0
  549.     bewirken, daß die untersuchten Größen zumindest während zwei Schnüffel-
  550.     vorgängen, und zumindest während der angegebenen Zeit in Millisekunden
  551.     unverändert sein müssen, bevor dem Hauptprogramm eine Änderung
  552.     mitgeteilt wird.
  553.     Das Argument für diese Einstellung lautet 'STABLETIME' und ist standard-
  554.     mäßig auf 20 gesetzt.
  555.  
  556.   Schnüffelintervall - mit diesem Regler wird die Verzögerungsdauer
  557.     eingestellt, die der Schnüffeltask zwischen zwei Schnüffelvorgängen
  558.     verstreichen lassen soll. Beachten Sie, daß die Genauigkeit dieser
  559.     Verzögerungsdauer an den Bildaufbau-Interrupt (vertical blanking 
  560.     interrupt), der jeweils in der vertikalen Austastlücke auftritt
  561.     gebunden ist. Die Bildwiederholfrequenz beträgt gewöhnlich 50Hz (PAL)
  562.     bis 70Hz (EURO36, EURO72, SUPER72), d.h. daß Sie niemals mehr als
  563.     etwa 50 (PAL) bis 70 (EURO36, etc.) Schnüffelvorgänge pro Sekunde
  564.     erreichen können. Andere Quellen als Zeitgeber wie ein CIA-Timer
  565.     scheiden in diesem Zusammenhang aus, da Sie zu viele Ressourcen für
  566.     zuwenig Gegenwert (hier kommt es wirklich nicht auf Genauigkeit an)
  567.     verbraten. Falls Sie hier große Werte einstellen, sollten Sie
  568.     unbedingt die Stabilisierspanne auf -1 setzen. Der gültige Bereich
  569.     für diesen Schieberegler ist 10..1000
  570.     Das hier zugehörige Argument 'SNOOPDELAY' ist standardmäßig auf
  571.     30 gesetzt.
  572.     
  573.   Schirm-Schritte - hiermit bestimmen Sie das Quantum, das Schirme
  574.     bei einer 'MoveScrXXX'-Aktion verschoben werden sollen. Dieses
  575.     Verschiebequantum bei einer solchen Aktion berechnet sich dabei
  576.     aus Größe der Anzeige (DisplayClip) des Schirms geteilt durch
  577.     den hier angegebenen Wert. Die Skala dieses Schiebereglers geht
  578.     von 1 bis 50.
  579.     'SCRMOVESTEPS' ist das Argument hierfür, es ist standardmäßig
  580.     auf 5 gesetzt.
  581.  
  582.   Fenster-Schritte - wie Schirm-Schritte, nur bestimmen Sie mit diesem
  583.     Wert das Quantum für 'MoveXXX'-, 'ExpandXXX'- und 'ShrinkXXX'-
  584.     Operationen.
  585.     Das entsprechende Argument lautet 'WINMOVESTEPS' und ist standard-
  586.     mäßig auf 5 gesetzt.
  587.  
  588.   CX-Priorität - hiermit bestimmen Sie die Priorität von Angies
  589.     Commodity-Broker. Beachten Sie, daß ihre Einstellung unmittelbar
  590.     umgesetzt wird, und nicht erst beim nächsten Start, wobei der Aufwand
  591.     um dies zu erreichen nicht unbeträchtlich war. Der Einstellbereich
  592.     für diesen Schieberegler ist -128..127
  593.     Das zugehörige Argument lautet 'CX_PRIORITY' und ist standardmäßig
  594.     auf 0 gesetzt.
  595.     
  596.  
  597. Es existiert ein einzelnes Texteingabe-Gadget namens 'Namensmuster für 
  598.     Fenster-Blättern', mit dem Sie das AmigaDos-Namensmuster angeben
  599.     können, das auf Fenstertitel beim Fensterblättern mit den
  600.     'ActivateNext'- bzw. 'ActivatePrev'-Aktionen angewandt wird. Fenster,
  601.     deren Name nicht auf das Namensmuster paßt, werden beim Blättern
  602.     übergangen.
  603.     Das Argument hierfür lautet 'SHUFFLEPAT' und ist standardmäßig auf
  604.     '#?' gesetzt. (Alle Namen passen auf das '#?' Namensmuster)
  605.     
  606.  
  607. Die übrigen Gadgets bilden ein System, um die Aktions-Hotkey-Liste von
  608. Angie zu unterhalten:
  609.  
  610.  
  611. Benutzen Sie das 'NEU'-Gadget, um neue Hotkeys in die Liste
  612. hinzuzufügen, das 'LÖSCHEN'-Gadget, um Hotkey-Einträge aus der Liste
  613. zu entfernen, das 'HOCH'-Gadget, um einen Hotkey-Eintrag in der Liste
  614. um eins nach oben zu verschieben, sowie das 'RUNTER'-Gadget, um einen
  615. Hotkey-Eintrag in der Liste um eins nach unten zu verschieben.
  616.  
  617. Mit dem Listen-Anzeige-Gadget für die Hotkeys können Sie durch die
  618. Hotkey-Liste schmökern, und den Hotkey-Eintrag auswählen, der verändert
  619. werden soll.
  620.  
  621.  
  622. Folgende Gadgets dienen dazu, den angewählten Hotkey-Eintrag zu
  623. verändern:
  624.  
  625. Im 'Aktion'-Texteingabe-Gadget können Sie eine beliebige 'AngieSequenz' 
  626. mit einer Länge von bis zu 255 Zeichen eingeben, die ausgeführt wird,
  627. wenn Sie den Hotkey auslösen. Dabei wird stinknormaler Text außerhalb
  628. jeglicher Klammern als Ascii-Text aufgefaßt, der in den Eingabestrom
  629. eingefügt wird. Text innerhalb spitzer Klammern wie '<lshift lshift_press>'
  630. stellt eine Commodities-Eingabeereignis-Beschreibung dar, Text in normalen,
  631. runden Klammern wie '(^ActivateNextScreen)' repräsentiert eine Angie-
  632. Intuition-Aktion (falls der Text jedoch nicht mit dem Namen einer Angie-
  633. Intuition-Aktion übereinstimmt ersatzweise eine asynchron auszuführende
  634. Dos-Kommandosequenz), Text in eckigen Klammern wie 
  635. '[^cd ram:<CTRL-J>newshell *]' wird ebenfalls als asynchron auszuführende
  636. Dos-Kommandosequenz aufgefaßt, während Text in geschweiften Klammern wie
  637. {magicpubname q tofront CygnusEdScreen1} als synchron auszuführende Dos-
  638. Kommandosequenz angesehen wird.  Ein '#n'-Ausdruck bedeutet eine
  639. Verzögerung, die vor der Ausführung jedes folgenden Elements der 
  640. AngieSequenz gewartet werden soll, und eine '~n'-Folge steht für eine
  641. einalige Verzögerung (wobei der gültige Bereich für n jeweils 0...999
  642. Millisekunden ist). Als allererstes Zeichen einer AngieSequenz, oder
  643. als Zeichen, das im Falle eines '()'/'[]'/'{}'-geklammerten Elements
  644. direkt auf die öffnende Klammer folgt, kann ein '^' (NachVorn-
  645. Attribut) angegeben werden.  Es bewirkt, daß das in die folgende
  646. Operation involvierte Fenster, oder ersatzweise der betroffene Schirm,
  647. falls kein Fenster von der Aktion berührt wird, nach vorne gebracht
  648. wird. Ein Beispiel für eine gültige AngieSequenz stellt z.B.
  649. '{magicpubname q tofront ShellScr}(^ActivateFrontScr)<control x>~200 list '
  650. dar.
  651.  
  652. Innerhalb des 'Aktion'-Gadgets, haben die Cursor-Hoch/Runter-Tasten eine
  653. spezielle Belegung:  falls sich der Cursor innerhalb eines geklammerten
  654. Elementes, oder auf einem Leerzeichen befindet, so wird dieses Element
  655. entweder durch die erste oder letze Angie-Intuition-Aktion aus Angies
  656. Intuition-Aktionen-Liste ersetzt. Andernfalls, falls der Cursor sich nicht
  657. innerhalb eines geklammerten Elementes oder auf einem Leerzeichen befindet,
  658. dann wird die entsprechende Angie-Intuition-Aktion bei der Cursorposition
  659. eingefügt.  Alle darauf folgenden, nacheinander auftretenden Betätigungen
  660. der Cursor-Hoch/Runter-Tasten auf diesem Element bewirken dann ein
  661. 'Blättern' des Elementes durch die verschiedenen Angie-Intuition-Aktionen.
  662. Das Drücken der ESC-Taste bewirkt, daß das Aktion-Gadget verlassen wird,
  663. wobei alle darin gemachten Änderungen verworfen werden.
  664.  
  665. Ein anderer Weg, den Inhalt des Aktion-Gadgets zu verändern, besteht darin,
  666. die jeweilige Angie-Intuition-Aktion aus dem 'Hotkey-Typ·edieren'-Menu
  667. auszuwählen. Dabei wird der gesamte bisherige Inhalt des Aktions-Gadgets
  668. durch den Namen der gewählten Aktion ersetzt.
  669.  
  670.  
  671.  
  672. Eine weiteres Gadget, mit dem der aktive Hotkey-Eintrag verändert wird,
  673. stellt das 'Attr'-Gadget dar. Mit ihm können Sie dem Hotkey-Eintrag
  674. drei verschieden Attribute zuweisen:
  675.  
  676. 1.  '~Filtern':  Falls dieses Attribut gesetzt ist, wird ein 
  677. Eingabeereignis, das auf die Hotkey-Defintion paßt, im Eingabestrom
  678. belassen, anstelle es wie normalerweise daraus zu entfernen.
  679.  
  680. 2.  '~SchrmAktv':  Dieses Attribut verhindert, daß die Betätigung eines
  681. rawkey-Hotkeys zu einer Tastendruck-Schirmaktivierung-Aktion führen kann.
  682. Für die 'NoKeyActivate'-Pseudo-Aktion wird es automatisch gesetzt.
  683. Allgemein sollten Sie dieses Attribut bei Hotkeys benutzen, die Schirme
  684. blättern ohne ein Fenster auf dem nach vorne gebrachten Schirm zu
  685. aktivieren, und bei Hotkeys, die mit Aktionen belegt sind, die Fenster
  686. jagen oder reaktivieren ('HuntWindow', 'LastActive' & 'LastActiveScr').
  687.  
  688. 3.  'Wdholbar':  hat die Auswirkung, daß Hotkey-Betätigungen, die aufgrund
  689. der Tastenwiederholung der Tastatur entstanden sind, normal abgearbeitet
  690. werden sollen, anstatt sie nur auszufiltern (globale Standardeinstellung
  691. von Angie).  Für Hotkeys, in deren Definition nicht '-repeat' oder 'repeat'
  692. vorkommt, ist dieses Attribut ohne Auswirkung.
  693.  
  694. Diese drei Attribute können auch durch die Einträge im 'Hotkeys·edieren->
  695. Attribute'-Untermenü verändert werden.
  696.  
  697.  
  698.  
  699. Das wichtigste Gadget innerhalb der Gruppe der Gadgets, die den aktuellen
  700. Hotkey-Eintrag verändern, stellt aber sicherlich das Texteingabegadget des
  701. Listen-Darstellungs-Gadgets, in dem die Hotkeys aufgeführt sind, dar.
  702. Mit ihm können Sie die Eingabeereignisse festlegen, die den jeweiligen
  703. Hotkey auslösen, indem sie darin eine gültige Commodities-Eingabeereignis-
  704. Beschreibung eintippen. Falls die Eingabeereignis-Beschreibung ungültig ist,
  705. wird anstelle der neu eingegebenen ungültigen Beschreibung wieder die zuvor
  706. aktive Beschreibung verwendet. Innerhalb dieses Gadgets haben die 
  707. Cursor-Hoch-/-Runter-Tasten auch eine spezielle Belegung: Ihre Betätigung
  708. ist analog zu einem Druck auf die Return-Taste bei aktiviertem Gadget und
  709. einem darauf folgenden Druck auf die entsprechende Cursor-Taste außerhalb
  710. des Gadgets.  Wie alle Texteingabe-Gadgets von Angie, kann auch dieses
  711. Gadget mit einem Druck auf die ESC-Taste verlassen werden, wobei die im
  712. Gadget gemachten Änderungen verworfen werden.
  713.  
  714.  
  715. Das Projekt-Menü sollte selbsterklärend sein:
  716.  
  717.   -Neu setzt Angie auf die Standardeinstellungen zurück.
  718.  
  719.   -Einstellungen·laden lädt die Konfiguration, die derzeit im
  720.    PROGDIR:Angie-Piktogramm gespeichert ist.
  721.    
  722.   -Wiederherstellen setzt Angie auf die Konfiguration zurück, die
  723.    zuletzt eingelesen wurde - entweder beim Programmstart oder nach
  724.    Auswahl des Einstellungen·laden-Menüpunktes.
  725.  
  726.   -Information öffnet ein Fenster mit Informationen über Angie. Beachten
  727.    Sie, daß während dieses Fenster dargestellt wird, Angie sich in
  728.    inaktivem Zustand befindet.
  729.    
  730.   -Verbergen schließt die interaktive Benutzeroberfläche von Angie
  731.   
  732.   -Beenden beendet Angie.
  733.   
  734.  
  735. Das unterstrichene Zeichen im Gadget-Text bezeichnet diejenige Taste, die
  736. verwendet werden kann, um das jeweilige Gadget über Tastatur zu betätigen.
  737. Weiterhin können die Cursor-Hoch-/-Runter-Tasten verwendet werden, um durch
  738. die Hotkey-Liste zu schmökern, die DEL-Taste kann außerdem dazu verwendet
  739. werden, den aktiven Hotkey-Eintrag zu löschen, ein Druck auf die ESC-Taste
  740. außerhalb der Texteingabe-Gadgets bewirkt, daß Angies interaktive
  741. Benutzerschnittstelle geschlossen wird, während ein Druck auf die 'Z'-Taste
  742. dazu dient, die Größe des Benutzerschnittstellenfensters zwischen Normal-
  743. und Minimalgröße hin- und herzuschalten.
  744.  
  745. Als gemeinsame Nicht-Standard-Tastatur-Belegung aller Texteingabe-Gadgets 
  746. von Angie ist die 'ESC'-Taste innerhalb von Texteingabe-Gadgets mit einer 
  747. 'CANCEL'-Funktion belegt:  das Gadget wird verlassen, wobei alle darin
  748. gemachten Änderungen verworfen werden.
  749.  
  750.  
  751.  
  752.  
  753.                 DIE VERSCHIEDENEN ANGIE-INTUITION-AKTIONEN
  754.                 ------------------------------------------
  755.  
  756. Jede Angie-Intuition-Aktion wird hier kurz umrissen:
  757.  
  758.  
  759. CX_POPKEY: 
  760.   Öffnet Angies Benutzerschnittstelle, oder aktiviert ihr Fenster und jagt
  761.   es, falls sie schon offen ist.
  762.  
  763. HuntWindow:
  764.   Führt eine Fenster-Jagen-Aktion aus.
  765.   
  766. Activate:
  767.   Aktiviert das Fenster unter dem Mauszeiger.
  768.  
  769. ActivateNext:  
  770.   Blättert vorwärts durch die Fenster des aktuellen Schirms.
  771.   
  772. ActivatePrev:  
  773.   Blättert rückwärts durch die Fenster des aktuellen Schirms.
  774.  
  775. ActivateBackdrop:
  776.   Aktiviert das erste Backdrop-Fenster des aktuellen Schirms.
  777.  
  778. ActivateFrontScr:
  779.   Aktiviert das vorderste Fenster des vordersten Schirms.
  780.   
  781. LastActive:
  782.   Aktiviert das Fenster, das vor dem derzeitig aktiven geöffnet war,
  783.   oder falls dieses nicht mehr existiert und der Schirm, auf dem es geöffnet
  784.   war noch existiert, und dieser Schirm vom derzeitig aktiven Schirm
  785.   verschieden ist, das vorderste Fenster jenes Schirms.
  786.  
  787. LastActiveScreen:
  788.   Aktiviert dasjenige Fenster, das zuletzt auf einem anderen Schirm als dem
  789.   aktuellen geöffnet war, oder falls dieses nicht mehr existert und der
  790.   Schirm, auf dem es geöffnet war noch existiert, das vorderste Fenster 
  791.   des betreffenden Schirms.
  792.   
  793. ToFront:
  794.   Bringt das aktive Fenster nach vorne.
  795.  
  796. ToBack:
  797.   Bringt das aktive Fenster nach hinten.
  798.  
  799. AdaptWindow:
  800.   Diese Aktion könnte man mit 'Umgekehrtes Fenster-Jagen' umschreiben:
  801.   das aktive Fenster wird (falls notwendig) so verschoben und verkleinert,
  802.   daß es in den gegenwärtig dargestellten Bildschirmausschnitt seines
  803.   Schirms passt.
  804.  
  805. CenterWindow:
  806.   Zentriert das aktive Fenster im gegenwärtig dargestellten Bildschirm-
  807.   ausschnitt seines Schirms.
  808.   
  809. Zip:
  810.   Das aktive Fenster wird 'gezipt', d.h. seine Position und Größe werden
  811.   hin- und hergeschaltet. Dies entspricht der Betätigung des Zoom-Gadgets.
  812.   
  813. Close:
  814.   Simuliert die Betätigung des Schließ-Gadgets des aktiven Fensters.
  815.  
  816. Max:
  817.   Verändert die Größe und Position des aktiven Fensters so, daß es
  818.   exakt den gegenwärtig dargestellten Bildschirmausschnitt seines Schirms
  819.   ausfüllt.
  820.   
  821. MaxWidth:
  822.   Wie oben, nur werden hier nur die horizontalen Komponenten beeinflußt.
  823.   Außerdem wird diese Operation nur dann ausgeführt, falls nach Ausführung
  824.   zumindest ein Teilausschnitt des Fensters im gegenwärtig dargestellten 
  825.   Bildschirmausschnitt seines Schirms sichtbar wäre.
  826.   
  827. MaxHeight:  
  828.   Wie MaxWidth, nur vertikal anstatt horizontal.
  829.   
  830. MinWin:
  831.   Verkleinert das aktive Fenster so weit wie möglich und verschiebt es in
  832.   die like untere Ecke des gegenwärtig dargestellten Bildschirmausschnitts
  833.   seines Schirms.
  834.  
  835. MoveLeft / MoveRight / MoveUp / MoveDown:
  836.   Verschiebt das Fenster in die entsprechende Richtung, wobei das
  837.   Verschiebequantum von der gegenwärtigen 'Fenster Schritte'-Einstellung
  838.   gewonnen wird.
  839.  
  840. UpperLeft / LowerLeft / UpperRight /  LowerRight:
  841.   Platziert das Fenster in der jeweiligen Ecke des gegenwärtig
  842.   dargestellten Bildschirmausschnitts seines Schirms.
  843.   
  844. ExpandWidth / ExpandHeight / ShrinkWidth / ShrinkHeight:
  845.   Vergrößert bzw. verkleinert die Breite bzw. Höhe des aktiven Fensters,
  846.   wobei das Quantum von der gegenwärtigen 'Fenster Schritte'-Einstellung
  847.   gewonnen wird.
  848.  
  849. DoubleWidth / DoubleHeight / HalveWidth / HalveHeight:
  850.   Verdoppelt bzw. halbiert die Breite bzw. Höhe des aktiven Fensters.
  851.   
  852. ActivateNextScreen / ActivatePrevScreen / ActivateWBenchScreen /
  853. ActivateDefPubScreen: 
  854.   Blättert vorwärts bzw. rückwärts durch die Schirmliste, bzw. bringt
  855.   den Workbench-Schirm bzw. den standardmäßigen öffentlichen Schirm
  856.   nach vorne und aktiviert das zuletzt aktive oder das vorderste
  857.   Fenster des neuen vordersten Schirms.  Falls der 'Jagen: Std-Off. 
  858.   Schirm setzen'-Schalter gesetzt ist, und das Auto-Fenster-Jagen
  859.   aktiviert ist, oder sowohl der 'Jagen bei FensterVor-Hotkeys'-Schalter
  860.   aktiv ist als auch das NachVorn-Attribut für die Aktion gesetzt ist,
  861.   wird außerdem der neue vorderste Schirm auch dann zum vordersten
  862.   Schirm gemacht, falls keine Fenster auf ihm geöffnet sind.
  863.  
  864. NextScreen / PrevScreen / WBenchScreen / DefPubScreen:
  865.   wie oben, nur daß keine Fensteraktivierung vorgenommen wird, und
  866.   keine Öffentl. Schirm-Aktionen vorgenommen werden.
  867.   
  868. ScrollScrLeft / ScrollScrRight / ScrollScrUp / ScrollScrDown:
  869.   Rollt den aktiven Schirm in die jeweilige Richtung wobei das
  870.   Rollquantum von der gegenwärtigen 'Schirm Schritte'-Einstellung
  871.   gewonnen wird.
  872.    
  873. UpperLeftScr / LowerLeftScr / UpperRightScr / LowerRightScr / 
  874. ShowScrCenter:
  875.   Macht den jeweiligen Schirm-Ausschnitt in der Anzeige (DisplayClip)
  876.   sichtbar.
  877.  
  878. ScreenTop:
  879.   Justiert die horizontale Schirmposition so, daß die obere Schirmkante
  880.   mit der oberen Kante des DisplayClips des Schirms übereinstimmt.
  881.   
  882. SetDefPubScreen:
  883.   Macht den aktiven Schirm zum standardmäßigen öffentlichen Schirm.
  884.   Falls auf dem vordersten Schirm keine Fenster offen sind, und der
  885.   aktive Schirm komplett unsichtbar ist, also kein Ausschnitt von ihm
  886.   dargestellt wird, dann wird stattdessen der vorderste Schirm für diese
  887.   Aktion verwendet.
  888.   Falls der von der Aktion betroffene Schirm kein öffentlicher Schirm ist,
  889.   so wird der Workbench-Schirm stattdessen zum neuen standardmäßigen
  890.   öffentlichen Schirm erklärt.
  891.  
  892. Filter: (** Pseudo-Aktion - wählen Sie diese durch das Menu an!! **)
  893.   Macht rein gar nichts: die einzige Auswirkung besteht darin, daß
  894.   die entsprechenden Hotkey-Eingabeereignisse aus dem Eingabestrom entfernt
  895.   werden.
  896.  
  897. NoKeyActivate: (** Pseudo-Aktion - wählen Sie diese durch das Menu an!! **)
  898.   Alle Tastatur-Eingabeereignisse, die der Hotkey-Eingabeereignis-
  899.   Beschreibung dieses Hotkeys entsprechen, sind grundsätzlich davon 
  900.   ausgeschlossen, eine Tastendruck-Schirmaktivierung-Aktion auszulösen.
  901.   Dies ist dafür nützlich, rawkey-Hotkeys anderer Commodities bzw.
  902.   Inputhandler daran zu hindern, Tastendruck-Schirmaktivierung-Aktionen
  903.   auszulösen.
  904.       (z.B. sinnvoll beim Intuition-Schirmblättern mit lcommand m/n)
  905.   
  906.  
  907.  
  908.  
  909.                        DIE SYNTAX DER ANGIESEQUENZEN
  910.                        -----------------------------
  911.  
  912. In der folgenden Definition sind Ausdrücke, die von eckigen Klammern
  913. umgeben werden wahlfrei, während Ausdrücke in geschweiften Klammern
  914. beliebig oft wiederholt oder ausgelassen werden können.
  915.  
  916. AngieSequenz := [ NachVornAttr ] AngieSequenz1
  917.  
  918. AngieSequenz1 := { IntuitionSequenz | AsyncDosSequenz | SyncDosSequenz |
  919.                     CxEingabeBeschreibungSequenz | AsciiText |
  920.                     VerzögSequenz | EinmalVerzögSequenz }
  921.  
  922. IntuitionSequenz := '(' [ NachVornAttr ] Angie_Intuition_aktion_string ')'
  923.  
  924. Angie_Intuition_aktion_string := Angie_Intuition_aktion | 
  925.                                  async_dos_kommando_sequenz
  926.  
  927. Angie_Intuition_aktion := "Name einer beliebigen Angie-Intuition-Aktion,
  928.                            so wie er im Hotkey-Typ·edieren - Menü
  929.                            angezeigt wird, ausgenommen sind
  930.                            pseudo_aktion_namen."
  931.                            
  932. pseudo_aktion_name := 'Filter' | 'NoKeyActivate' | 'Custom'
  933.                            
  934. AsyncDosSequenz := '[' [ NachVornAttr ] async_dos_kommando_sequenz ']'
  935.  
  936. SyncDosSequenz := '{' [ NachVornAttr ] sync_dos_kommando_sequenz '}'
  937.  
  938. async_dos_kommando_sequenz := dos_kommando_sequenz 
  939.  
  940. sync_dos_kommando_sequenz := dos_kommando_sequenz 
  941.  
  942. dos_kommando_sequenz := [ zeilen_trenner | dos_kommando_zeile ] 
  943.                         [ zeilen_trenner dos_kommando_sequenz ]
  944.  
  945. zeilen_trenner := '<control-j>' | '¶'          ; '¶' = <alt p>
  946.  
  947. dos_kommando_zeile := "eine Zeile Ascii-Text, die als Dos-Befehl ausgeführt
  948.                        wird."
  949.  
  950. CxEingabeBeschreibungSequenz := '<' eingabe_ereignis_beschreibung '>'
  951.  
  952. eingabe_ereignis_beschreibung := "eine Zeichenkette, die ein Eingabeereignis
  953.                                   gemäß der commodities.library beschreibt."
  954.  
  955. AsciiText := esc_sequenz | gültiges_zeichen   ; Kurzschluß-Auswertung!
  956.  
  957. esc_sequenz := '\' esc_umschreibung
  958.  
  959. esc_umschreibung := [ 'n' | 'r' | '0' | 't' | 'f' | ''' | '"' | 
  960.                       '<' | '(' | '[' | '{' | '\' | 'x' sedezimal_wert ]
  961.  
  962. gültiges_zeichen := "ein beliebiges ASCII-Zeichen mit Ausname 
  963.                      von ungültiges_zeichen."
  964.              
  965. ungültiges_zeichen := '<' | '(' | '[' | '{'
  966.  
  967. sedezimal_wert := sedezimal_ziffer [ sedezimal_ziffer ]
  968.  
  969. sedezimal_ziffer := '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' |
  970.                     '9' | '0' | 'a' | 'b' | 'c' | 'd' | 'e' | 'f'
  971.  
  972. VerzögSequenz := '#' [verzög_dauer] [ ' ' ] 
  973.  
  974. EinmalVerzögSequenz := '~' [verzög_dauer] [ ' ' ]
  975.  
  976. verzög_dauer := "Dezimaldarstellung der Verzögerungsdauer in Millisekunden,
  977.                  gültiger Bereich 0..999" 
  978.  
  979. NachVornAttr := '^';
  980.  
  981.  
  982. BEMERKUNG:
  983. -Wo immer das NachVornAttr(ibut) angegeben werden kann, und eine
  984.  '\^'-Sequenz direkt nach jener Position folgt, wird die '\^'-Sequenz
  985.  durch ein einzelnes '^'-Zeichen ersetzt.
  986.  
  987. -Weiterhin kann innerhalb geklammerter AngieSequenz1-Elemente die
  988.  schließende Klammer als normales Zeichen verwendet werden, indem man
  989.  ihr ein '\' voranstellt (z.B. ist '[echo "[Hello\]"]' eine gültige 
  990.  async_dos_kommando_sequenz).
  991.  
  992.  
  993.  
  994. Die bisherige formale Defintion sollte eigentlich größtenteils
  995. selbsterklärend sein.  Einige Dinge verlangen jedoch eine ausführlichere
  996. Erörterung:
  997.  
  998. Die verzög(erungs)_dauer von Verzög(erungs)Sequenzen und
  999. EinmalVerzög(erungs)Sequenzen beträgt standardmäßig 50 Millisekunden, falls
  1000. sie nicht in den Sequenzen aufgeführt wird.
  1001.  
  1002.  
  1003. Wie sich das NachVornAttr(ibut) auswirkt:
  1004.  
  1005. -als erstes Element einer AngieSequenz, löst es eine 'ToFront'-
  1006.  Angie_Intuition_aktion aus bevor der Rest der AngieSequenz bearbeitet
  1007.  wird.
  1008.  
  1009. -bei dos_kommando_sequenzen bewirkt es, daß der standardmäßige öffentliche
  1010.  Schirm nach vorne springt bevor die dos_kommando_sequenz gestarted wird.
  1011.  
  1012. -bei Angie_Intuition_aktionen hängt die Wirkung von der Aktion selbst ab:
  1013.  falls von der Aktion ein Fenster betroffen ist, springt dieses nach vorne.
  1014.  Andernfalls, falls überhaupt kein Fenster, aber ein Schirm involviert ist,
  1015.  so springt dieser nach vorne. Übrigens: Falls die Aktion 'ToBack' ist, so
  1016.  hat das Attribut selbstverständlich überhaupt kein Auswirkung!;-)
  1017.  
  1018.  
  1019. Die Umsetzung der esc_sequenzen in einzelne Zeichen:
  1020.  
  1021.           \n   -  Linefeed, Zeilentrenner (wird als Wagenrücklauf eingefügt)
  1022.           \r   -  Wagenrücklauf
  1023.           \0   -  Nul
  1024.           \t   -  Horizontaler Tabulator
  1025.           \f   -  Formfeed, Neue Seite
  1026.           \xff -  ASCII-Code 0xff (f steht dabei für eine Sedezimal-Ziffer)
  1027.           \'   -  Apostroph
  1028.           \"   -  Anführungszeichen
  1029.           \\   -  Backslash, Rück-Querstrich '\'
  1030.           \<   -  '<' spitze Klammer auf
  1031.           \(   -  '(' runde Klammer auf
  1032.           \[   -  '[' eckige Klammer auf
  1033.           \{   -  '{' geschweifte Klammer auf
  1034.  
  1035.  
  1036.  
  1037. BEACHTEN SIE FOLGENDES!!!!
  1038.   sync_dos_kommando_sequenzen sind eine kritische Sache weil während ihrer
  1039.   Ausführung Angie für ALLE anderen Aktionen BLOCKIERT ist. Verwenden Sie
  1040.   sync_dos_kommando_sequenzen also nur in AngieSequenzen wie
  1041.   '{magicpubname q tofront CygnusEdScreen1}(^ActivateFrontScr)', in denen
  1042.   die dos_kommando_sequenz wirklich synchron ausgeführt werden muß und wo
  1043.   ihre Ausführung nur wenig Zeit beansprucht. Starten sie NIEMALS
  1044.   interaktive Anwendungen oder änliches synchron!!!
  1045.  
  1046.  
  1047.  
  1048. Die Start-Parameter beim Ausführen von async_dos_kommando_sequenzen:
  1049.   Die Priorität des gestarteten Tasks, dessen Stapelspeichergröße, dessen
  1050.   aktuelles Verzeichnis und Dos-Befehls-Suchpfad entsprechen denjenigen,
  1051.   die beim Starten Angie übergeben wurden. Die aktuellen Eingabe- und
  1052.   Ausgabekanäle werden auf eine interaktive Konsole mit für den aktuellen
  1053.   standardmäßigen öffentlichen Schirm optimierter Positionierung und 
  1054.   Abmessung gesetzt. Die Konsole hat dabei die WAIT/AUTO/CLOSE-Attribute
  1055.   gesetzt, und öffnet ihr Fenster erst bei der ersten auftretenden
  1056.   Ein- / Ausgabe-Operation.
  1057.  
  1058. Bei der Ausführung von sync_dos_kommando_sequenzen wird im Unterschied dazu
  1059. keine Konsole geöffnet, und die Taskpriorität des gestarteten Tasks
  1060. entspricht der gegenwärtigen Priorität des Angie-Tasks.
  1061.  
  1062.  
  1063.  
  1064.  
  1065. So weit, so gut.  Für nähere Informationen sehen Sie sich bitte die
  1066. beigefügte Angie-Konfiguration näher an oder schauen Sie in die
  1067. ausführlichere englischsprachige Dokumentation.
  1068.  
  1069.  
  1070.                           DIE AREXX-SCHNITTSTELLE
  1071.                           -----------------------
  1072.  
  1073. Angie besitzt eine ARexx-Schnittstelle, mit der Sie Angie von außen (z.B.
  1074. aus Ihren ARexx-Skripten) beliebige ARexx-Sequenzen ausführen lassen
  1075. können.  Zu diesem Zweck richtet Angie beim Programmstart einen
  1076. öffentlichen ARexx-Port namens 'ANGIEREXX' ein.
  1077.  
  1078. Ein simples Beispiel für ein ARexx-Skript:
  1079.  
  1080.   options results
  1081.   address command 'SetActiveWin tpat (%|#?/|#:)Clock'
  1082.   if rc = 0 then address 'ANGIEREXX' '(HuntWindow)'
  1083.   else address command 'run <nil: <nil: sys:utilities/clock'
  1084.  
  1085. Weiterhin können Sie, indem Sie das Kommando 'QUIT' an Angies ARexx-Port
  1086. schicken, Angie verlassen.
  1087.  
  1088.  
  1089.  
  1090.  
  1091.                          WIE MAN HOTKEYS DEFINIERT
  1092.                          -------------------------
  1093.  
  1094. Vorbemerkung:
  1095.  
  1096. Angie 3.0 hebt die meisten Beschränkungen auf, die die commodities.library
  1097. V37-V40 im Bezug auf das Übersetzen von Commodity-Eingabeereignis-
  1098. Beschreibungen in InputXpressions setzt.  So können innerhalb von Angie nun
  1099. auch die armen Workbench 2.04 - Benutzer die rawmouse-Tastencodes
  1100. 'MOUSE_LEFTPRESS', 'MOUSE_MIDDLEPRESS' & 'MOUSE_RIGHTPRESS' verwenden, die
  1101. sonst erst ab Workbench 2.1 unterstützt werden.  Bis zumindest
  1102. einschließlich Workbench 3.1 kennt die commodities.library leider keine
  1103. Tastencodes für die Tastatur-Qualifier-Tasten wie Shift, Alt, Control, etc.
  1104. Innerhalb Angie können Sie jedoch die rawkey-Tastencodes 'CONTROL_PRESS',
  1105. 'CAPS_PRESS', 'LSHIFT_PRESS', 'RSHIFT_PRESS', 'LALT_PRESS', 'RALT_PRESS',
  1106. 'LAMIGA_PRESS' & 'RAMIGA_PRESS' verwenden.  Die notwendigen Erweiterungen,
  1107. um diese zusätzlichen Keycodes übersetzen zu können, wurden dabei so
  1108. gestaltet, daß diese Erweiterungen mit jeder zukünftigen Version der
  1109. commodities.library zusammenarbeiten.
  1110. Einige Commodity-Eingabeereignis-Beschreibungen, die innerhalb von Angie
  1111. mit jeder Version der commodities.library richtig übersetzt werden:
  1112. 'rawmouse leftbutton mouse_leftpress'
  1113. 'rawmouse -capslock upstroke mouse_middlepress'
  1114. 'lshift -capslock -control -alt lshift_press'
  1115. '-capslock -upstroke caps_press'
  1116.  
  1117. DIESE FAKTEN FINDEN IM FOLGENDEN TEXT KEINE BEACHTUNG!!
  1118.  
  1119.  
  1120. Der folgende Text ist der Dokumentation von Stefan Becker's ToolManager
  1121. entnommen.  Freundlicherweise hatte er keine Einwände gegen die Verwendung
  1122. innerhalb der Dokumentation von Angie:
  1123.  
  1124.  
  1125. Wie man einen Tastenbefehl definiert
  1126. *************************************
  1127.  
  1128.    Diese Kapitel beschreibt wie man einen Tastenbefehl als einen Input
  1129. Description String definiert, der dann von Commodities ausgewertet
  1130. werden kann. Jedes Mal, wenn ein Tastenbefehl ausgeführt wird, erzeugt
  1131. Commodities eine Ereignis, das dann von ToolManager dazu benutzt wird
  1132. Programmobjekte zu aktivieren oder Dock-Objekte umzuschalten. Ein
  1133. Description String hat die folgende Syntax:
  1134.  
  1135.      [<Klasse>] {[-][<Qualifier>]} [-][upstroke] [<Tastenkode>]
  1136.  
  1137.    Alle Befehlsworte können groß oder klein geschrieben werden.
  1138.  
  1139.    `Klasse' beschreibt die InputEvent-Klasse. Dieser Parameter ist
  1140. optional und falls er weggelassen wird, dann wird die Vorgabe `rawkey'
  1141. benutzt. Siehe InputEvent-Klassen.
  1142.  
  1143.    Qualifier sind "Signale", die gesetzt oder nicht gesetzt sein
  1144. müssen zu dem Zeitpunkt, an dem der Tastenbefehl ausgeführt wird,
  1145. sonst wird kein Ereignis erzeugt. Für jeden Qualifier, der gesetzt
  1146. sein soll, müssen Sie das Befehlswort angeben. Alle anderen Qualifier
  1147. müssen dann nicht gesetzt sein. Falls Sie einen Qualifier ignorieren
  1148. wollen, dann setzen sie ein `-' vor sein Befehlswort. Siehe Qualifier.
  1149.  
  1150.    Normalerweise wird ein Ereignis erzeugt, wenn eine Taste gedrückt
  1151. wird. Falls das Ereignis generiert werden soll wenn die Taste
  1152. losgelassen wird, dann müssen Sie das Befehlswort `upstroke' angeben.
  1153. Wenn sowohl beim Drücken als auch beim Loslassen der Taste ein
  1154. Ereignis erzeugt werden soll, dann müssen sie das Befehlswort
  1155. `-upstroke' angeben.
  1156.  
  1157.    Der Tastenkode ist abhängig von der InputEvent-Klasse. Siehe
  1158. Tastenkodes.
  1159.  
  1160.    Achtung: Wählen Sie ihre Tastenbefehle *sorgfältig*, denn
  1161. Commodities hat eine hohe Priorität in der InputEvent-Handlerkette,
  1162. d.h. vorgegebene Definitionen werden übergangen.
  1163.  
  1164.  
  1165. InputEvent-Klassen
  1166. ===================
  1167.  
  1168.    Commodities unterstützt die meisten der InputEvent-Klassen, die von
  1169. dem input.device erzeugt werden. Diese Sektion beschreibt die Klassen,
  1170. die nützlich für ToolManager sind.
  1171.  
  1172. `rawkey'
  1173.      Dies ist die vorgegebene Klasse. Sie beschreibt alle Ereignisse,
  1174.      die durch die Tastatur erzeugt werden können. Zum Beispiel
  1175.      erzeugt `rawkey a' oder `a' jedesmal ein Ereignis, wenn die Taste
  1176.      "a" gedrückt wird. Sie müssen einen Tastenkode für diese Klasse
  1177.      angeben. Siehe rawkey Tastenkodes.
  1178.  
  1179. `rawmouse'
  1180.      Diese Klasse beschreibt alle Ereignisse, die durch die Maus
  1181.      erzeugt werden können. Sie müssen einen Tastenkode für diese
  1182.      Klasse angeben. Siehe rawmouse Tastenkodes.
  1183.  
  1184. `diskinserted'
  1185.      Ereignisse dieser Klasse werden generiert, wenn eine Diskette in
  1186.      ein Laufwerk gelegt wird. Diese Klasse besitzt keine Tastenkodes.
  1187.  
  1188. `diskremoved'
  1189.      Ereignisse dieser Klasse werden generiert, wenn eine Diskette aus
  1190.      einem Laufwerk genommen wird. Diese Klasse besitzt keine
  1191.      Tastenkodes.
  1192.  
  1193.  
  1194. Qualifier
  1195. ==========
  1196.  
  1197.    Einige Befehlsworte wurden erst bei Commodities V38 eingeführt.
  1198. Diese sind mit einem `*' markiert.
  1199.  
  1200. `lshift', `left_shift' *
  1201.      Linke Shift-Taste.
  1202.  
  1203. `rshift', `right_shift' *
  1204.      Rechte Shift-Taste.
  1205.  
  1206. `shift'
  1207.      Irgendeine Shift-Taste.
  1208.  
  1209. `capslock', `caps_lock' *
  1210.      Caps-Lock-Taste.
  1211.  
  1212. `caps'
  1213.      Irgendeine Shift-Taste oder die Caps-Lock-Taste.
  1214.  
  1215. `control', `ctrl' *
  1216.      Control-Taste.
  1217.  
  1218. `lalt', `left_alt' *
  1219.      Linke Alt-Taste.
  1220.  
  1221. `ralt', `right_alt' *
  1222.      Rechte Alt-Taste.
  1223.  
  1224. `alt'
  1225.      Irgendeine Alt-Taste.
  1226.  
  1227. `lcommand', `lamiga' *, `left_amiga' *, `left_command' *
  1228.      Linke Amiga-/Kommando-Taste.
  1229.  
  1230. `rcommand', `ramiga' *, `right_amiga' *, `right_command' *
  1231.      Rechte Amiga-/Kommando-Taste.
  1232.  
  1233. `numericpad', `numpad' *, `num_pad' *, `numeric_pad' *
  1234.      Dieses Befehlswort *muß* angegeben werden, wenn eine Taste von der
  1235.      Zehnertastatur benutzt wird.
  1236.  
  1237. `leftbutton', `lbutton' *, `left_button' *
  1238.      Linke Maustaste. Siehe unten.
  1239.  
  1240. `midbutton', `mbutton' *, `middlebutton' *, `middle_button' *
  1241.      Mittlere Maustaste. Siehe unten.
  1242.  
  1243. `rbutton', `rightbutton' *, `right_button' *
  1244.      Rechte Maustaste. Siehe unten.
  1245.  
  1246. `repeat'
  1247.      Dieser Qualifier ist gesetzt, wenn die Tastenwiederholung aktiv
  1248.      ist. Dies ist nur sinnvoll für die InputEvent-Klasse `rawkey'.
  1249.  
  1250.    Achtung: Commodities V37 hat einen Fehler, der die Benutzung von
  1251. `leftbutton', `midbutton' und `rbutton' als Qualifier verhindert.
  1252. Dieser Fehler wurde in V38 behoben.
  1253.  
  1254.  
  1255. Tastenkodes
  1256. ============
  1257.  
  1258.    Jede InputEvent-Klasse besitzt ihre eigenen Tastenkodes:
  1259.  
  1260.  
  1261. Tastenkodes für die InputEvent-Klasse `rawkey'
  1262. -----------------------------------------------
  1263.  
  1264.    Einige Befehlsworte wurden erst bei Commodities V38 eingeführt.
  1265. Diese sind mit einem `*' markiert.
  1266.  
  1267. `a'-`z', `0'-`9', ...
  1268.      ASCII-Zeichen.
  1269.  
  1270. `f1', `f2', ..., `f10', `f11' *, `f12' *
  1271.      Funktionstasten.
  1272.  
  1273. `up', `cursor_up' *, `down', `cursor_down' *
  1274. `left', `cursor_left' *, `right', `cursor_right' *
  1275.      Cursor-Tasten.
  1276.  
  1277. `esc', `escape' *, `backspace', `del', `help'
  1278. `tab', `comma', `return', `space', `spacebar' *
  1279.      Spezial-Tasten.
  1280.  
  1281. `enter', `insert' *, `delete' *
  1282. `page_up' *, `page_down' *, `home' *, `end' *
  1283.      Tasten der Zehnertastatur. Diese Tastenkodes *müssen* mit dem
  1284.      Qualifier `numericpad' benutzt werden!
  1285.  
  1286.  
  1287. Tastenkodes für die InputEvent-Klasse `rawmouse'
  1288. -------------------------------------------------
  1289.  
  1290.    Diese Befehlsworte wurden erst bei Commodities V38 eingeführt. Sie
  1291. sind nicht verfügbar in V37.
  1292.  
  1293. `mouse_leftpress'
  1294.      Drücke die linke Maustaste.
  1295.  
  1296. `mouse_middlepress'
  1297.      Drücke die mittlere Maustaste.
  1298.  
  1299. `mouse_rightpress'
  1300.      Drücke die rechte Maustaste.
  1301.  
  1302.    Achtung: Um einen dieser Tastenkodes zu benutzen, müssen sie auch
  1303. das entsprechende Qualifier-Befehlswort angeben, z.B.
  1304.  
  1305.      rawmouse leftbutton mouse_leftpress
  1306.  
  1307.  
  1308. Beispiele für Tastenbefehle
  1309. ============================
  1310.  
  1311. `ralt t'
  1312.      Rechte Alt-Taste festhalten und "t" drücken.
  1313.  
  1314. `ralt lalt t'
  1315.      Rechte *und* linke Alt-Taste festhalten und "t" drücken.
  1316.  
  1317. `alt t'
  1318.      Irgendeine Alt-Taste festhalten und "t" drücken.
  1319.  
  1320. `rcommand f2'
  1321.      Rechte Amiga-Taste festhalten und die zweite Funktionstaste
  1322.      drücken.
  1323.  
  1324. `numericpad enter'
  1325.      Enter-Taste auf der Zehnertastatur drücken.
  1326.  
  1327. `rawmouse midbutton leftbutton mouse_leftpress'
  1328.      Mittlere Maustaste festhalten und die linke Maustaste drücken.
  1329.  
  1330. `diskinserted'
  1331.      Eine Diskette in ein Laufwerk einlegen.
  1332.  
  1333. ****
  1334.  
  1335. ** Ende des von Stefan Becker übernommenen Textes **
  1336.  
  1337.  
  1338.  
  1339.  
  1340.               TUTORIUM / DIE BEIGEFÜGTE HOTKEY-KONFIGURATION
  1341.               ----------------------------------------------
  1342.  
  1343. Es ist ziemlich wichtig, daß Sie sich die beigefügte Hotkey-Konfiguration
  1344. genau anschauen, weil Sie nur dann, wenn Sie sich alle darin enthaltenen
  1345. Definitionen genau anschauen, sicher sein können, die ganze Vielfalt und
  1346. Mächtigkeit, die in Angie steckt, zu kennen, und so Ihr persönliches
  1347. Intuition auch wirklich umsetzen können.
  1348.  
  1349. Es folgen nun Erläuterungen zu einigen ausgewählten Hotkey-Belegungen:
  1350.  
  1351. *** 
  1352.  
  1353. 'lcommand esc' ist belegt mit '[^cd ram:¶newshell *]'
  1354.  
  1355. Die Auswirkung ist, daß jedesmal, wenn Sie die linke Amiga-Taste gedrückt
  1356. halten und dann anschließend die ESC drücken, Angie eine AsyncDosSequenz 
  1357. startet, die zuerst das aktuelle Verzeichnis des neu gestarteten Prozesses
  1358. auf 'ram:' setzt, und danach eine interaktive Shell mit der von Angie für
  1359. diesen Prozeß angelegten Konsole als Ein-/Ausgabe-Konsole startet.  Das
  1360. Konsolenfenster ist dabei größen- und positionsoptimiert für den
  1361. derzeit dargestellen Bildschirmausschnitt des standardmäßigen öffentlichen
  1362. Schirm und öffnet sich auf dem aktuellen standardmäßigen öffentlichen
  1363. Schirm erst genau dann, wenn die erste I/O-Operation auftritt.  Weil
  1364. außerdem das NachVorn-Attribut '^' für die hier verwendete AsyncDosSequenz
  1365. gesetzt ist, wird der standardmäßige öffentliche Schirm vor dem Starten des
  1366. neuen Prozesses nach vorn gebracht.
  1367.  
  1368. ***
  1369.  
  1370. 'f7' ist belegt mit '^<control x>~80list   lformat "%s%s"<left>\
  1371. <left><left><left><left><left><left><left><left><left><left><left><left>\
  1372. <left><left><left>'
  1373.  
  1374. Diese Definition zeigt bereits, wie man verschiedene Aktionen auf einen
  1375. Hotkey legt. Sie kann innerhalb einer Shell verwendet werden: falls Sie
  1376. f7 drücken, springt das aktive (Shell-)Fenster nach vorn (NachVorn-Attribut
  1377. '^' am Anfang der AngieSequenz), Text der bereits im Fenster getippt ist,
  1378. wird durch das <control x>-Element der AngieSequenz gelöscht, und darauf hin
  1379. wird nach einer kurzen Verzögerung von 80 Millisekunden
  1380. ('~80'-EimmalVerzögerungsSequenz) der Text 'list lformat "%s%s"' eingefügt,
  1381. und schließlich der Cursor auf das zweite Leerzeichen nach 'list'
  1382. positioniert.
  1383.  
  1384. Warum die EimmalVerzögerungsSequenz, werden Sie sich fragen.  Die Antwort
  1385. darauf lautet, daß eine Konsole normalerweise fähig ist,
  1386. Tastatur-Eingabeereignisse ohne jede Verzögerung zu verarbeiten, außer eben
  1387. im speziellen <control x>-Fall:  wann immer die Konsole dieses Zeichen
  1388. erhält, hat Sie einen kurzen Blackout von mehreren Dutzend Millisekunden,
  1389. während dem Sie alle einkommenden Eingabeereignisse verschluckt.
  1390.  
  1391. ***
  1392.  
  1393. 'f8' ist belegt mit '#200 <rawmouse leftbutton mouse_leftpress>\
  1394. <rawmouse upstroke mouse_leftpress>'
  1395.  
  1396. Wenn Sie also die Funktionstaste f8 drücken, wird ein Maus-Klick auf die
  1397. linke Maustaste von 200 Millisekunden Dauer simuliert:  es werden zwei
  1398. rawmouse-Eingabeereignisse in den Eingabestrom eingefügt, mit einer 200
  1399. Millisekunden langen Pause dazwischen:  das erste Ereignis stellt dabei das
  1400. Niederdrück-Ereignis dar, während das zweite Ereignis das Loslass-Ereignis
  1401. repräsentiert.
  1402.  
  1403. ***
  1404.  
  1405. 'diskinserted' ist belegt mit '[if exists sys:utilities/say¶\
  1406. sys:utilities/say "You've inserted a disk right now"¶endif]' und
  1407. gesetztem ~Filtern-Attribut.
  1408.  
  1409. Diese Definition hat die Auswirkung, daß, wann immer Sie eine Diskette in
  1410. eins Ihrer Laufwerke einlegen, Angie eine ASyncDosSequenz startet, die
  1411. versucht mit Hilfe des Say-Programms der Workbench 2.04, den
  1412. Sprachsynthesizer des Amiga dazu zu bringen, Ihnen auf Englisch zu
  1413. erzählen, daß Sie gerade eine Diskette eingelegt haben.  Das
  1414. ~Filtern-Attribut ist gesetzt, damit andere Commodities bzw. InputHandler,
  1415. die mit niedrigerer Priorität als Angie laufen und auf 'diskinserted'-
  1416. Eingabeereignisse reagieren, diese Ereignisse auch mitgeteilt bekommen.
  1417. Ansonsten würden alle 'diskinserted'-Ereignisse von Angie verschluckt.
  1418.  
  1419. ***
  1420.  
  1421. 'rawmouse leftbutton rightbutton mouse_rightpress' ist belegt mit
  1422. '#100<rawmouse upstroke mouse_leftpress><lcommand shift l>' und
  1423. 'lcommand shift -repeat l' ist belegt mit '(ToBack)' 
  1424.  
  1425. BEACHTEN SIE:  Diese Definition funktioniert nur, falls Sie Workbench 2.1
  1426. oder besser verwenden - aus folgendem Grund:  Aufgrund eines Fehlers
  1427. ignoriert die commodities.library Version 37 der Workbench 2.04 alle
  1428. 'leftbutton'-, 'midbutton'- und 'rbutton'-Qualifier wenn Sie nach einem
  1429. passenden Eingabeereignis sucht.  Als Konsequenz würde dieser Hotkey bei
  1430. JEDEM Klick auf den rechten Mausknopf ausgelöst.  Das ist jedoch nicht
  1431. hinnehmbar; deshalb wurde in dieser Definition der 'rbutton'-Qualifier
  1432. durch den 'rightbutton'-Qualifier ersetzt, den die commodities.library V37
  1433. nicht versteht - so kommt es schließlich, daß, falls Sie Workbench 2.04
  1434. verwenden, dieser Hotkey-Eintrag nicht aktiviert wird.
  1435.  
  1436. Die zuerst aufgeführte Definition ist ein spezielles 'Magic', um ein
  1437. Fenster nach hinten zu legen, indem man die rechte Maustaste niederdrückt,
  1438. während man die linke Maustaste gedrückt hält.  DIESE DEFINITION
  1439. FUNKTIONIERT SOGAR BEI AKTIVER AUTO-FENSTER-JAGEN-FUNKTION, falls Sie
  1440. kleine 'Stabilisier-Spanne'- & 'Schnüffelintervall'-Werte verwenden
  1441. (Andernfalls ersetzen Sie die '#100'-VerzögerungsSequenz einfach durch
  1442. '#200' etc).  Schauen Sie sich diese Definition genau an, besonders die
  1443. '<rawmouse upstroke mouse_leftpress>'-CxEingabeBeschreibungSequenz:  jedes
  1444. Mal, wenn Sie einen rawmouse-Hotkey definieren, in dem der
  1445. leftbutton-Qualifier ohne den mouse_leftpress-Tastencode auftritt, und Sie
  1446. diesem Hotkey eine Intuition-Fenster-Aktion zuweisen wollen, wird Ihnen
  1447. geraten, es so wie hier zu machen:  Belegen Sie den Hotkey zuerst mit jener
  1448. <rawmouse upstroke mouse_leftpress>-CxEingabeBeschreibungSequenz, danach
  1449. entweder nach einer EimmalVerzögerungsSequenz von ca.  150 Millisekunden
  1450. und dann den restlichen Aktionen oder wie hier nur mit einer weiteren
  1451. CxEingabeBeschreibungSequenz, die die eigentliche Aktion auslöst.  Dies
  1452. sollten Sie deshalb machen, weil andernfalls WORKBENCH-Fenster äußerst
  1453. träge auf einen solchen Hotkey reagieren.  Das ist in keinster Weise Angies
  1454. Schuld, sondern liegt nur an Intuition selbst.  Die
  1455. '#100'-VerzögerungsSequenz in diesem Beispiel dient übrigens lediglich
  1456. dazu, die Auto-Fenster-Jagen-Funktion von Angie auszutricksen.
  1457.  
  1458. Die zweite Definition in diesem Beispiel ('lcommand shift -repeat l') zeigt
  1459. schließlich, wie man normale rawkey-Hotkeys innerhalb von Angie definiert:
  1460. falls Sie die linke Amiga-Taste in Verbindung mit einer Shift-Taste gedrückt
  1461. halten, und dann die 'l'-Taste drücken, wird das aktive Fenster nach hinten
  1462. gelegt.
  1463.  
  1464. ***
  1465.  
  1466. 'lcommand shift -repeat z' ist belegt mit '(Zip)' &
  1467. 'lcommand -repeat z' ist belegt mit '(^Zip)' 
  1468.  
  1469.  
  1470. Diese Definition sind zwei normale rawkey-Hotkey-Definitionen, die beide
  1471. das aktive Fenster zwischen zwei Größen und Positionen hin- und
  1472. herschalten.  Bei der zweiten Defintion wird außerdem das Fenster nach
  1473. vorne gebracht (und es wird gejagt, falls die 'Jagen bei
  1474. FensterVor-Hotkeys'-Funktion aktiv ist), da das NachVorn-Attribut '^' für
  1475. diese Aktion gesetzt ist.  Wenn Sie die Auto-Fenster-Jagen-Funktion
  1476. aktiviert haben wird übrigens stets in beiden Fällen das Fenster nach vorn
  1477. gebracht und gejagt.
  1478.  
  1479. Beachten Sie den '-repeat'-Qualifier in der Definition.  Er bewirkt, daß,
  1480. falls Sie die 'z'-Taste gedrückt halten, die dann generierten
  1481. Wiederhol-Tastatur-Eingabeereignisse auch in dieser Definition
  1482. berücksichtigt sind.  'ABER', werden Sie sagen, 'Ich erhalte doch nur EINE
  1483. Zip-Aktion, auch wenn ich die 'z'-Taste gedrückt halte.' Beruhigen Sie sich,
  1484. dies ist vollkommen korrekt und liegt an Angie:  Standardmäßig verschluckt
  1485. Angie alle Wiederhol-Tastatur-Eingabeereignisse selbst. Um dies für einen
  1486. Hotkey zu verhindern, brauchen Sie lediglich das 'Wdholbar'-Attribut für
  1487. diesen Hotkey zu setzen - dann wird auch bei Wiederhol-Tastatur-
  1488. Eingabeereignissen, die auf ihre Hotkey-Definition passen, die zugehörige
  1489. AngieSequenz ausgeführt.
  1490.  
  1491. ***
  1492.  
  1493. 'lcommand -shift -repeat help' ist belegt mit '(^HuntWindow)' und dem
  1494. ~SchrmAktv-Attribut gesetzt und
  1495. 'lcommand lamiga_press' ist belegt mit der 'NoKeyActivate'-PSEUDO-Aktion
  1496. und gesetzten ~Filtern-, ~SchrmAktv- & Wdholbar-Attributen.
  1497.  
  1498. Die erste Defintion ist eine rawkey-Hotkey-Definition mit einer
  1499. ungewöhnlichen Eigenschaft:  das ~SchrmAktv-Attribut ist für diese
  1500. Definition gesetzt.  Das hat die Auswirkung, daß auch dann, wenn der
  1501. aktive Schirm vollkommen unsichtbar ist und mindestens ein sichtbarer
  1502. Schirm mit Fenstern existiert, während die Tastendruck-Schirmaktivierung-
  1503. Funktion aktiv ist, ein Tastendruck auf diesen Hotkey NIEMALS eine
  1504. Tastendruck-Schirmaktivierung-Aktion auslöst. Falls sich also das aktive
  1505. Fenster auf einem vollkommen verdeckten Schirm befindet, können Sie
  1506. grundsätzlich in jedem Fall <lcommand help> drücken, um dieses Fenster zu
  1507. jagen.  Falls sie das ~SchrmAktv-Attribut nicht angegeben hätten, würde ein
  1508. Druck auf die Help-Taste bei aktiver Tastendruck-
  1509. Schirmaktivierung-Funktion möglicherweise ein neues Fenster auf einem
  1510. sichtbaren Schirm aktivieren, das dann jejagt würde, was natürlich Quatsch
  1511. wäre.  
  1512. Falls der zweite Hotkey nicht defniert wäre, würde bereits ein Tastendruck
  1513. auf die linke Amiga-Taste, die ja gedrückt sein muß, um den ersten Hotkey
  1514. auszulösen, möglicherweise eine solche unerwünschte Fensteraktivierung
  1515. auslösen (mehr dazu im nächsten Beispiel).
  1516.  
  1517. ***
  1518.  
  1519. 'lcommand lamiga_press' &
  1520. 'lcommand -repeat -shift -alt -control -capslock m' &
  1521. 'lcommand -repeat -shift -alt -control -capslock n' sind allesamt mit
  1522. der 'NoKeyActivate'-PSEUDO-Aktion und den ~Filtern-, ~SchrmAktv- &
  1523. Wdholbar-Attributen belegt.
  1524.  
  1525. Diese Definition sind in mehrerlei Hinsicht ungewöhnlich: zum einen
  1526. ist die 'NoKeyActivate'-Aktion eine PSEUDO-Aktion, d.h.  sie löst keine
  1527. Aktion aus. Zum zweiten sind für eine 'NoKeyActivate'-PSEUDO-Aktion die
  1528. ~Filtern-, ~SchrmAktv- & Wdholbar-Attribute erzwungen. Alle passenden
  1529. Eingabeereingnisse sind grundsätzlich davon ausgenommen, eine
  1530. Tastendruck-Schirmaktivierung-Aktion auszulösen, auch dann, wenn alle
  1531. Voraussetzungen für eine solche Aktion vorliegen (siehe vorheriges
  1532. Beispiel).
  1533.  
  1534. Die beiden zuletzt aufgeführten Pseudo-Hotkey-Definitionen stellen dabei
  1535. die gewöhnlichen Intuition-Tastenkombinationen für Schrim-Blättern dar.
  1536. Warum sollen diese Tastatur-Eingabeereignisse davon ausgeschlossen werden,
  1537. eine Tastendruck-Schirmaktivierung-Aktion auszulösen?  - Weil es
  1538. normalerweise unerwünscht ist, daß Hotkeys, die Schirme blättern und debei
  1539. nicht ein Fenster auf dem nach vorne gebrachten Schirm aktivieren, eine
  1540. Tastendruck-Schirmaktivierung-Aktion auslösen, ganz gleich, ob diese
  1541. Hotkeys in Angie (in diesem Fall genügt es, das ~SchrmAktv-Attribut zu
  1542. setzen) oder außerhalb von Angie definiert sind.
  1543.  
  1544. Die erste Pseudo-Hotkey-Definition dieses Beispiels betrifft die linke
  1545. Amiga-Taste:  alle Tastendrücke auf die linke Amiga-Taste lösen dadurch
  1546. niemals eine Tastendruck-Schirmaktivierung-Aktion aus.  Das ist nützlich,
  1547. weil nahezu alle rawkey-Hotkeys der beigefügten Konfiguration (und die
  1548. 'lcommand m/n'-Schirmblätter-Hotkeys von Intuition!) diese Taste als
  1549. Qualifier beinhalten.  Wenn nun ein solcher Hotkey mit dem ~SchrmAktv-
  1550. Attribut versehen ist, dann wäre das nutzlos, wenn nicht gleichzeitig für
  1551. den darin enthaltenen Tastatur-Qualifier ein 'NoKeyActivate'-PSEUDO-Hotkey
  1552. angelegt würde, da ansonsten ein Druck auf die Qualifier-Taste eine
  1553. Tastendruck-Schirmaktivierung-Aktion auslösen könnte.
  1554.  
  1555. ***
  1556.  
  1557. WEITERE HOTKEY-BEISPIELE IN ZUSAMMENHANG MIT SYNCDOSSEQUENZEN UND DEM
  1558. SETACTIVEWIN-UTILITY BEFINDEN SICH IN DER DOKUMENTATION ZU SETACTIVEWIN!!
  1559.  
  1560.  
  1561.  
  1562.                           DIE EVOLUTION VON ANGIE
  1563.                           -----------------------
  1564.  
  1565.  
  1566.   v1.0 20.10.93 [fSchwarz]
  1567.  
  1568.   v1.1 22.10.93 [fSchwarz] improved setDefPubScreen action
  1569.     fixed ActivateXXXXScreen; fixed Menu Attrs selection
  1570.  
  1571.   v1.2 23.10.93 [fSchwarz] doesn't send any closeWindow
  1572.     event on Close action when window is blocked by
  1573.     requesters.
  1574.  
  1575.   v1.3 24.10.93 [fSchwarz] added Edithook for hotkey
  1576.     definition gadget
  1577.  
  1578.   v1.4a 29.10.93 [fSchwarz] major code cleanup; now
  1579.     supports dos command and inputevent insertion type
  1580.  
  1581.   v1.5 4.11.93 [fSchwarz] now really uses the frontmost
  1582.     window of screens instead of just screen.firstWindow;
  1583.     improved Key Screen Activation handling for screens
  1584.     without windows
  1585.  
  1586.   v1.6 4.11.93 [fSchwarz] removed last Intuition stuff from
  1587.     cxcustom inputhandler - now all accesses to Intuition
  1588.     structures are safeguarded by official CBM protocols;
  1589.     enhanced Intuition/GadTools V37 GUI
  1590.  
  1591.   v1.7 7.11.93 [fSchwarz] now accounts the fact that
  1592.     ViewPortExtra.displayClip is volatile and dependent on
  1593.     the displayids of both, the affected screen & the front
  1594.     screen; improved timing in msghandler (results in faster
  1595.     Auto-Hunts when receiving many CxMsgs consecutively
  1596.     and in better hotkey recursion capabilities); now
  1597.     needs BlackMagic 1.14; fixed nasty Enforcer hit in
  1598.     DefinitionProc() that turned out very rarely and was
  1599.     due to use of post-freed memory (which was usually
  1600.     immediately reallocated, so Enforcer/Mungwall hardly
  1601.     ever noticed it); improved Intuition left mouse button
  1602.     effective detection
  1603.  
  1604.   v2.0 11.11.93 [fSchwarz] Angie is now completely localized;
  1605.     fixed rare timing problems that were due to rearranging
  1606.     Intuition related KeyScreenActivation stuff from the
  1607.     the cxcustom handler to the main task; changed again
  1608.     KeyScreenActivation handling; complete code heavily
  1609.     revised & updated to ensure optimal ergonomics when
  1610.     there's no current active window, yet an active screen;
  1611.     now right mouse button blocks all Auto-Hunt (it doesn't
  1612.     block hotkey-(attribute)-based hunts, though!);
  1613.     former WinToFront attribute changed to 'ToFront': *If
  1614.     and only if* the hotkey action doesn't involve a window,
  1615.     but a screen, the attribute causes a ScreenToFront()
  1616.     instead of a simple WindowToFront(). HuntWindow action
  1617.     now hunts the active screen if no active window exists;
  1618.     the KeyScreenActivation considers that case, too.
  1619.     Most window-related hotkey-actions (except Hunt) now
  1620.     simply activate the BestWindow() if there exists no
  1621.     active window (ToFront/Hunt according to the hotkey
  1622.     attrs); optimized LastActive-Action (now activates the
  1623.     frontmost window of the last window's screen if the
  1624.     last window doesn't exist any more, but the screen it
  1625.     was opened on, and that screen differs from the active
  1626.     one). Added Capslock-AutoHunt-mode (default!): capslock
  1627.     is alienated as an inverse Auto-Hunt toggle switch, all
  1628.     capslock events & capslock qualifier in inputevents
  1629.     are eliminated.; Now cxcustom handler code runs at
  1630.     three different priorities. Moved some IntuitionBase
  1631.     related window code to own module. Angies minimum
  1632.     taskpri is now 5; wintask priority increment only
  1633.     happens if resulting priority isn't greater than
  1634.     Angies taskpri. Added 'New', 'Read Settings' &
  1635.     'Restore settings' to the project menu; remembers also
  1636.     the second last window/screen for LastActive/
  1637.     LastActiveScr actions; general changes in the code to
  1638.     obtain better ergonomics in many places; added
  1639.     'DEFAULTPREFS' argument (especially for CLI): loads
  1640.     the configuration stored in PROGDIR:Angie.info.
  1641.     Angie now requires CxLib V1.1 with ArgArrayDiskObj().
  1642.     All tooltypes longer than 128 chars (the official
  1643.     length limit as of the RKMs) are now split by Angie
  1644.     for the icon writing (fixes problems with Workbench's
  1645.     Icon->Information menu item that prunes all longer
  1646.     tooltypes). Main module is now split into three modules.
  1647.     Plus several changes I forgot to mention here.
  1648.  
  1649.   v3.0 19.11.93 [fSchwarz] COMPLETELY NEW CONCEPT: Angie-
  1650.     Sequences, consisting of multiple Angie actions, ascii
  1651.     text, commodities input descriptions, & async / sync
  1652.     dos command sequences are now assigned to the hotkeys.
  1653.     The ToFront attribute is now replaced by a 'NoFilter'
  1654.     attribute (the ToFront attribute may now be specified
  1655.     separately for each item of an AngieSequence). Angie
  1656.     parses now qualifier keystrokes like 'LALT_PRESS' in
  1657.     input descriptions - along with mouse button keystrokes
  1658.     in input descriptions even for V37 commodities users;
  1659.     simple NoScrActivate pseudo hotkeys now work for V37,
  1660.     too (own ParseIX() extension, own V37 MatchIX()).
  1661.     fixed NewMenu array size of the edit menu. For
  1662.     proportional fonts, gimmeZeroZero windows are used in
  1663.     conjunction with other slLevelFormat - this fixes V37
  1664.     level display problems and keeps the window borders
  1665.     from messing up in those rare cases where the nominal
  1666.     proportional font's width is utterly misleading.
  1667.     Invocation of WindowToFront() is now omitted if the
  1668.     respective window is already the screen's frontmost
  1669.     window (results in much better performance for
  1670.     gimmeZeroZero windows). GetBestWin() now accounts that
  1671.     visible screens may follow after invisible screens in
  1672.     the IntuitionBase screen list. cx_pri slider step is
  1673.     now level-adaptive (like snoopdelay/stabletime sliders)
  1674.     A new tooltype format for hotkeys is now used - old
  1675.     format can still be read. Another new (default!)
  1676.     auto hunt mode is provided: CapsLock1 (functionality
  1677.     is the same as for the old CapsLock mode which is now
  1678.     called CapsLock2, except that capslock keystrokes & the
  1679.     capslock qualifier in the ievents are left untouched).
  1680.  
  1681.   v3.1 22.11.93 [fSchwarz] removed all code where
  1682.     LockLayerInfo() is called directly or indirectly with
  1683.     a locked IntuitionBase due to very unlikely deadlock
  1684.     situations that may arise from LockLayerInfo() when
  1685.     IBase is locked. Other protocol to avoid illegal
  1686.     mem access & to ensure valid window pointer is used
  1687.     instead. Distribution now includes my SetActiveWin
  1688.     and MagicPubName shell utilities that can be perfectly
  1689.     used in SyncDosSequences. In order to disencourage
  1690.     you from abusing SyncDosSequences for launching
  1691.     interactive stuff, etc, and in order to improve
  1692.     performance, SyncDosSequences are now executed without
  1693.     new I/O channels & with the same priority Angie is
  1694.     running. Fixed bug that kept Angie from activating
  1695.     the BestWindow for most Intuition actions in case
  1696.     no active window exists (bug was due to the severe
  1697.     code changes that were necessary for inventing the
  1698.     AngieSequence concept)
  1699.  
  1700.   v3.2 23.11.93 [fSchwarz] all CxMsgs of cxmIEvent type
  1701.     that are older than 2.5 seconds are discarded by the
  1702.     msghandler now; rearranged msghandler code - this
  1703.     fixes all backlog problems and makes the GUI accessable
  1704.     even when Angie is busy with CxMsgs & AutoHunt. Support
  1705.     for proportional fonts has now greatly improved: all
  1706.     strings in Angies window are now accounted for
  1707.     calculating the window width - even for the most
  1708.     excentric proportional fonts, display won't mess up.
  1709.     The distribution now includes full-featured German
  1710.     docs, another utility (RawInsert) for DosSequences
  1711.     and SetActiveWin 1.1 (V1.0 could cause Intuition 
  1712.     deadlocks!)
  1713.  
  1714.   v3.3 24.11.93 [fSchwarz] Strangely, AddIEvents() doesn't
  1715.     set the timeStamp of the InputEvents as opposed to
  1716.     the v37 input device writeEvent command - this caused
  1717.     problems in conjunction with the anti backlog handling
  1718.     that was invented in Angie 3.2, so Angie itself now
  1719.     sets the TimeStamp. The same problem was present in the
  1720.     RawInsert utility - now fixed in RawInsert 1.1;
  1721.     improved performance & minimized gadget/menu refresh
  1722.     for hotkey list browsing.
  1723.  
  1724.   v3.3a 25.11.93 [fSchwarz] fixed another small bug that
  1725.     was due to the code changes for the AngieSequence
  1726.     concept (scrActivateMagic const had to be set to a
  1727.     unique value outside the range of AngieSequence ids)
  1728.  
  1729.   v3.5 1.12.93 [fSchwarz] added AREXX interface for
  1730.     executing AngieSequences from outside Angie. Fixed
  1731.     bug in the SetActiveWin utility that frustrated
  1732.     activation of windows on non-public screens (V1.2)
  1733.  
  1734.   v3.6 3.12.93 [fSchwarz] adapted to Amiga-Oberon 3.10,
  1735.     fixed active/inactive state handling (now arexx works
  1736.     great even if Angie is in inactive state); fixed error
  1737.     exit code; introduced '¶'-lineFeedMagic as a linefeed
  1738.     substitute within dos_command_sequences.
  1739.     !!! THIS IS the last revision for 1993 !!!
  1740.  
  1741.  
  1742.  
  1743.  
  1744.                                 RECHTLICHES
  1745.                                 -----------
  1746.  
  1747. Angie ist urheberrechtlich geschützt.  Copyright © 1993 Franz Schwarz
  1748.  
  1749. Angie ist GIFTWARE.  Das heißt, Sie sollten dem Autor ein hübsches
  1750. Geschenk, D-Märker oder ZUMINDEST eine originelle Postkarte zukommen
  1751. lassen, falls Sie das Programm verwenden.
  1752.  
  1753. Außerdem ist Angie TOLERANCEWARE.  Das heißt, es ist Personen, die
  1754. Gewalttaten gegen andere Menschen wegen deren Herkunft, Hautfarbe,
  1755. sexueller Orientierung, Geschlecht, Religion, oder Behinderung 
  1756. unterstützen oder diese billigen, ausdrücklich und strengstens verboten,
  1757. dieses Softwarepaket zu verwenden oder irgendeinen Nutzen daraus zu ziehen.
  1758.  
  1759. USE AT YOUR OWN RISK:  Der Autor haftet für keinerlei Schäden, die
  1760. unmittelbar oder mittelbar vom Gebrauch dieses Programms herrühren.
  1761.  
  1762. Angie ist frei kopierbar; es darf auf der AmigaLibraryDisk-Disketten-Serie
  1763. und auf anderen nicht-kommerziellen Disketten-Serien vertrieben werden,
  1764. inklusive CD-ROM-Versionen derselben, ebenfalls darf es auf dem Weg der
  1765. Datenfernübertragung verbreitet werden.
  1766.  
  1767. Angie darf nur in diesem Archiv komplett verbreitet werden.  Einzige
  1768. Ausnahme hiervon:  falls dieses Archiv den Quelltext von Angie enthält,
  1769. dann dürfen im weiterverbreiteten Archiv die 'txt'- und 'Locale'-
  1770. Verzeichnisse und die zugehörigen Piktogramme entfernt sein.
  1771.  
  1772. Weiterhin darf Angie nur verbreitet werden, falls der Vertreiber kein
  1773. Urheberrecht auf dieses Archiv, den Inhalt dieses Archivs, noch auf
  1774. Dateien, die zwangsweise mit ihm verbreitet werden, erhebt (Dateien, die
  1775. zwangsweise mit Angie verbreitet werden, sind solche Dateien, die nicht zum
  1776. Angie-Archiv gehören und von denen der Vertreiber behauptet, ohne diese
  1777. dürfe das Angie-Archiv nicht weiterverbreitet und weiterkopiert werden)
  1778.  
  1779. Anfragen auf Ausnahmen von diesen Beschränkungen können an den Autor
  1780. gerichtet werden.
  1781.  
  1782.  
  1783.                     Sie erreichen mich folgendermaßen:
  1784.                     ----------------------------------
  1785.  
  1786.                                Franz Schwarz
  1787.                    Mühlenstraße 2, D-78591 Durchhausen,
  1788.                               BR Deutschland
  1789.                     Uucp: Franz_Schwarz@mil.ka.sub.org
  1790.                         Fido Classic: 2:2476/506.18
  1791.               Kto. 951.207 bei BLZ 643 500 70 KSK Trossingen
  1792.  
  1793.  
  1794.  
  1795.  
  1796.  
  1797.  
  1798.                                   EPILOG
  1799.                                   ------
  1800.  
  1801.                              Am Anfang war...
  1802.  
  1803. ...  Angie nur ein hübscher Name, dann kamen die Rolling Stones und machten
  1804. daraus eine Rock-Legende.  Schließlich kam das Angie-Commodity über alle
  1805. Amigas und verhieß ihnen ewige Intuition und erfüllte so die lange
  1806. prophezeite Dreieinigkeit in Angie, dem Namen, dem Song und dem Commodity.
  1807.  
  1808.                          Angie ist ein Akronym für
  1809.  
  1810.                     ANother  Great  Intuition  Enhancer
  1811.  
  1812.  
  1813.         Viel Spaß wünscht
  1814.              Franz 'Blacky' Schwarz
  1815.  
  1816.  
  1817. PS:  Diese Dokumentation wurde innerhalb weniger Nachtstunden geschrieben,
  1818. und ist bisher nicht redigiert worden - also bitte keine Lamenti über 
  1819. eventuell darin vorhandene zahlreiche Fehler.;-)
  1820.  
  1821.